Русский
Открыть в Telegram

Пост ➡️Подготовка базы данных

15 сентября 2024
P
Pythoner
Фотография
➡️Подготовка базы данных Прежде чем начать вставку внешних ключей, необходимо подготовить базу данных и создать таблицы, между которыми мы будем устанавливать связи. Рассмотрим простой пример двух таблиц: authors и books. Таблица authors будет содержать информацию об авторах, а таблица books - информацию о книгах, написанных этими авторами. Для начала создадим эти таблицы с использованием языка SQL. CREATE TABLE authors ( author_id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL ); CREATE TABLE books ( book_id SERIAL PRIMARY KEY, title VARCHAR(100) NOT NULL, author_id INT, FOREIGN KEY (author_id) REFERENCES authors (author_id) ); ➡️Вставка данных и внешних ключей с помощью Python Теперь, когда наша база данных готова, мы можем перейти к вставке данных и внешних ключей с помощью Python. Для этого нам понадобится библиотека psycopg2, которая позволяет взаимодействовать с PostgreSQL базой данных. Убедитесь, что она установлена: pip install psycopg2 Далее, напишем скрипт на Python, который будет вставлять данные в таблицы authors и books, устанавливая соответствующие внешние ключи. import psycopg2 # Соединение с базой данных conn = psycopg2.connect( dbname="your_db_name", user="your_db_user", password="your_db_password", host="your_db_host", port="your_db_port" ) cursor = conn.cursor() # Вставка данных в таблицу authors cursor.execute("INSERT INTO authors (name) VALUES (%s) RETURNING author_id", ("J.K. Rowling",)) author_id = cursor.fetchone()[0] #Вставка данных в таблицу books с указанием внешнего ключа cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Harry Potter", author_id)) # Сохранение изменений и закрытие соединения conn.commit() cursor.close() conn.close() ➡️Проверка и управление целостностью данных Внешние ключи помогают поддерживать целостность данных в базе данных. Например, они не позволяют вставлять в таблицу books значения author_id, которых нет в таблице authors. Рассмотрим, как это работает на практике. Попробуем вставить книгу с несуществующим author_id и посмотрим, что произойдет. try: cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Unknown Book", 999)) conn.commit() except psycopg2.IntegrityError as e: conn.rollback() print("Ошибка целостности данных: невозможно вставить книгу с несуществующим автором.") В данном случае psycopg2 выбросит исключение IntegrityError, и мы сможем обработать его, откатив изменения и предупредив пользователя об ошибке. 🐍Pythoner
25 · 1.8K ·

Рядом в ленте

PPythoner➡️Django чуть медленнее Flask из-за своей более высокой функциональности и накладных расходов. Однако на практике разница в скорости работы между ними незначитеPPythoner✈️Да, функции можно объявлять внутри других функций. Такая вложенная функция будет видна и доступна для вызова только внутри родительской функции, в которой она
это сообщение
PPythonerФотографияPPythonerОпрос
PPythonerPythoner@pythonercode · канал · Технологии
6 535подписчиков637средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем