Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #1 Design tables for PhoneBook:
- CREATE TABLE phonebook (
- user_id SERIAL PRIMARY KEY,
- first_name VARCHAR(50) NOT NULL,
- last_name VARCHAR(50) NOT NULL,
- phone_number VARCHAR(20) UNIQUE NOT NULL
- );
- """
- Этот SQL-код создает новую таблицу с именем phonebook с четырьмя столбцами: user_id, first_name, last_name и phone_number.
- CREATE TABLE phonebook: Создает новую таблицу с именем phonebook.
- user_id SERIAL PRIMARY KEY: Создает столбец user_id с типом данных SERIAL, который автоматически генерирует уникальные числовые значения при вставке новых строк. PRIMARY KEY означает, что значения в этом столбце должны быть уникальными, и каждая строка должна иметь значение в этом столбце (не NULL).
- first_name VARCHAR(50) NOT NULL: Создает столбец first_name с типом данных VARCHAR(50), который может хранить строковые значения длиной до 50 символов. NOT NULL указывает, что каждая строка должна иметь значение в этом столбце (не NULL).
- last_name VARCHAR(50) NOT NULL: Создает столбец last_name с типом данных VARCHAR(50), который может хранить строковые значения длиной до 50 символов. NOT NULL указывает, что каждая строка должна иметь значение в этом столбце (не NULL).
- phone_number VARCHAR(20) UNIQUE NOT NULL: Создает столбец phone_number с типом данных VARCHAR(20), который может хранить строковые значения длиной до 20 символов. UNIQUE указывает, что значения в этом столбце должны быть уникальными. NOT NULL указывает, что каждая строка должна иметь значение в этом столбце (не NULL).
- """
- #2a
- # Implement two ways of inserting data into the PhoneBook:
- # a. Upload data from a CSV file:
- import csv
- import psycopg2
- def insert_data_from_csv(file_name):
- conn = psycopg2.connect("your_connection_string")
- cur = conn.cursor()
- with open(file_name, 'r') as f:
- reader = csv.reader(f)
- next(reader) # skip the header
- for row in reader:
- cur.execute("INSERT INTO phonebook (first_name, last_name, phone_number) VALUES (%s, %s, %s)", row)
- conn.commit()
- cur.close()
- conn.close()
- insert_data_from_csv("phonebook.csv")
- """
- Импортирует библиотеки csv и psycopg2. csv используется для работы с CSV-файлами, а psycopg2 - для работы с PostgreSQL.
- Определяет функцию insert_data_from_csv(file_name), которая принимает имя файла CSV.
- Внутри функции insert_data_from_csv:
- a. Создается соединение с базой данных PostgreSQL с помощью строки подключения your_connection_string. Замените your_connection_string на вашу строку подключения к базе данных.
- b. Создается курсор, который будет использоваться для выполнения SQL-запросов.
- c. Открывает файл CSV с указанным именем файла (file_name) и создает объект reader для чтения содержимого файла.
- d. Пропускает заголовок файла CSV с помощью next(reader).
- e. Цикл for проходит по всем строкам файла CSV. Для каждой строки выполняется SQL-запрос INSERT INTO phonebook (first_name, last_name, phone_number) VALUES (%s, %s, %s) для вставки данных из строки CSV в таблицу phonebook.
- После выполнения всех вставок, выполняется conn.commit() для сохранения изменений в базе данных.
- Закрывает курсор и соединение с базой данных.
- Вызывает функцию insert_data_from_csv("phonebook.csv") для вставки данных из файла phonebook.csv в таблицу phonebook. Замените имя файла на имя вашего файла CSV с данными телефонной книги.
- """
- #2b Enter user name and phone from the console:
- def insert_data_from_console():
- conn = psycopg2.connect("your_connection_string")
- cur = conn.cursor()
- first_name = input("Enter the first name: ")
- last_name = input("Enter the last name: ")
- phone_number = input("Enter the phone number: ")
- cur.execute("INSERT INTO phonebook (first_name, last_name, phone_number) VALUES (%s, %s, %s)", (first_name, last_name, phone_number))
- conn.commit()
- cur.close()
- conn.close()
- insert_data_from_console()
- """
- Этот код на Python определяет функцию insert_data_from_console(), которая вставляет данные в таблицу phonebook из пользовательского ввода с консоли:
- Внутри функции insert_data_from_console:
- a. Создается соединение с базой данных PostgreSQL с помощью строки подключения your_connection_string. Замените your_connection_string на вашу строку подключения к базе данных.
- b. Создается курсор, который будет использоваться для выполнения SQL-запросов.
- c. Запрашивает у пользователя имя (first_name), фамилию (last_name) и номер телефона (phone_number) через консоль с помощью функции input().
- d. Выполняется SQL-запрос INSERT INTO phonebook (first_name, last_name, phone_number) VALUES (%s, %s, %s) для вставки данных из пользовательского ввода в таблицу phonebook.
- После выполнения вставки, выполняется conn.commit() для сохранения изменений в базе данных.
- Закрывает курсор и соединение с базой данных.
- Вызывает функцию insert_data_from_console() для вставки данных из пользовательского ввода в таблицу phonebook. При вызове этой функции пользователю будет предложено ввести имя, фамилию и номер телефона через консоль.
- """
- #3 Implement updating data in the table (change user first name or phone):
- def update_data(user_id, first_name=None, phone_number=None):
- conn = psycopg2.connect("your_connection_string")
- cur = conn.cursor()
- if first_name:
- cur.execute("UPDATE phonebook SET first_name = %s WHERE user_id = %s", (first_name, user_id))
- if phone_number:
- cur.execute("UPDATE phonebook SET phone_number = %s WHERE user_id = %s", (phone_number, user_id))
- conn.commit()
- cur.close()
- conn.close()
- update_data(1, first_name="New Name", phone_number="123-456-7890")
- """
- Этот код на Python определяет функцию update_data(user_id, first_name=None, phone_number=None), которая обновляет данные в таблице phonebook в соответствии с предоставленными параметрами.
- Внутри функции update_data:
- a. Создается соединение с базой данных PostgreSQL с помощью строки подключения your_connection_string. Замените your_connection_string на вашу строку подключения к базе данных.
- b. Создается курсор, который будет использоваться для выполнения SQL-запросов.
- c. Проверяет, задано ли значение first_name. Если да, выполняется SQL-запрос UPDATE phonebook SET first_name = %s WHERE user_id = %s, который обновляет значение first_name для записи с указанным user_id.
- d. Проверяет, задано ли значение phone_number. Если да, выполняется SQL-запрос UPDATE phonebook SET phone_number = %s WHERE user_id = %s, который обновляет значение phone_number для записи с указанным user_id.
- После выполнения обновлений, выполняется conn.commit() для сохранения изменений в базе данных.
- Закрывает курсор и соединение с базой данных.
- Вызывает функцию update_data(1, first_name="New Name", phone_number="123-456-7890") для обновления данных записи с user_id=1 в таблице phonebook. В качестве новых значений задаются имя "New Name" и номер телефона "123-456-7890".
- """
- #4 Querying data from the tables (with different filters):
- def query_data(first_name=None, last_name=None, phone_number=None):
- conn = psycopg2.connect("your_connection_string")
- cur = conn.cursor()
- query = "SELECT * FROM phonebook WHERE 1=1"
- if first_name:
- query += f" AND first_name = '{first_name}'"
- if last_name:
- query += f" AND last_name = '{last_name}'"
- if phone_number:
- query += f" AND phone_number = '{phone_number}'"
- cur.execute(query)
- results = cur.fetchall()
- cur.close()
- conn.close()
- return results
- print(query_data(first_name="John"))
- """
- Этот код на Python определяет функцию query_data(first_name=None, last_name=None, phone_number=None), которая выполняет запрос данных из таблицы phonebook с использованием предоставленных фильтров.
- Внутри функции query_data:
- a. Создается соединение с базой данных PostgreSQL с помощью строки подключения your_connection_string. Замените your_connection_string на вашу строку подключения к базе данных.
- b. Создается курсор, который будет использоваться для выполнения SQL-запросов.
- c. Запрос начинается с основы SELECT * FROM phonebook WHERE 1=1. Условие 1=1 облегчает добавление дополнительных условий с использованием AND.
- d. Если задано значение first_name, добавляется условие AND first_name = '{first_name}'.
- e. Если задано значение last_name, добавляется условие AND last_name = '{last_name}'.
- f. Если задано значение phone_number, добавляется условие AND phone_number = '{phone_number}'.
- g. Выполняется SQL-запрос с учетом всех заданных условий.
- h. Извлекает все результаты запроса с помощью cur.fetchall() и сохраняет их в переменную results.
- Закрывает курсор и соединение с базой данных.
- Возвращает результаты запроса.
- Вызывает функцию query_data(first_name="John") и выводит результаты запроса на экран с помощью print(). В данном случае функция вернет все записи из таблицы phonebook, у которых значение first_name равно "John".
- """
- #5 Implement deleting data from tables by username or phone:
- def delete_data(first_name=None, phone_number=None):
- conn = psycopg2.connect("your_connection_string")
- cur = conn.cursor()
- query = "DELETE FROM phonebook WHERE 1=1"
- if first_name:
- query += f" AND first_name = '{first_name}'"
- if phone_number:
- query += f" AND phone_number = '{phone_number}'"
- cur.execute(query)
- conn.commit()
- cur.close()
- conn.close()
- delete_data(first_name="John")
- delete_data(phone_number="123-456-7890")
- """
- Этот код на Python определяет функцию delete_data(first_name=None, phone_number=None), которая удаляет данные из таблицы phonebook с использованием предоставленных фильтров.
- Внутри функции delete_data:
- a. Создается соединение с базой данных PostgreSQL с помощью строки подключения your_connection_string. Замените your_connection_string на вашу строку подключения к базе данных.
- b. Создается курсор, который будет использоваться для выполнения SQL-запросов.
- c. Запрос начинается с основы DELETE FROM phonebook WHERE 1=1. Условие 1=1 облегчает добавление дополнительных условий с использованием AND.
- d. Если задано значение first_name, добавляется условие AND first_name = '{first_name}'.
- e. Если задано значение phone_number, добавляется условие AND phone_number = '{phone_number}'.
- f. Выполняется SQL-запрос с учетом всех заданных условий.
- После выполнения удаления, выполняется conn.commit() для сохранения изменений в базе данных.
- Закрывает курсор и соединение с базой данных.
- Примеры вызовов функции:
- a. Вызывает функцию delete_data(first_name="John") для удаления всех записей из таблицы phonebook, у которых значение first_name равно "John".
- b. Вызывает функцию delete_data(phone_number="123-456-7890") для удаления всех записей из таблицы phonebook, у которых значение phone_number равно "123-456-7890".
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement