PostgreSQL - Python Interface: A Beginner's Guide
Привет, будущие маги баз данных! Я рад, что стану вашим проводником в захватывающем мире PostgreSQL и Python. Как кто-то, кто преподавал информатику на протяжении многих лет, я могу сказать, что это сочетание похоже на арахисовое масло и джем – просто delicious! Так что надевайте рабочие рукава и погружайтесь с головой!
Установка
Прежде чем мы сможем начать творить магию, нам нужно настроить наши инструменты. Представьте это как подготовку кухни перед приготовлением изысканного блюда.
-
Во-первых, убедитесь, что у вас установлен PostgreSQL на вашем компьютере. Вы можете скачать его с официального сайта PostgreSQL.
-
Далее, нам нужно установить Python-модуль, который позволит нам общаться с PostgreSQL. Откройте ваш терминал или командную строку и введите:
pip install psycopg2
Эта команда похожа на то, что вы просите ваш компьютер добавить новый инструмент в его ящик. Как только это будет сделано, вы будете готовы к действию!
API модуля Python psycopg2
Теперь, когда у нас есть инструменты, давайтеquicklook, что они могут делать. Модуль psycopg2 предоставляет нам一套 функций для взаимодействия с PostgreSQL. Вот таблица самых распространенных:
Функция | Описание |
---|---|
connect() | Устанавливает соединение с базой данных |
cursor() | Создает объект курсора для выполнения SQL-команд |
execute() | Выполняет операцию с базой данных (запрос или команду) |
fetchone() | Получает следующую строку набора результатов запроса |
fetchall() | Получает все (остающиеся) строки набора результатов запроса |
commit() | Фиксирует текущую транзакцию |
rollback() | Возвращает к началу любойpendente транзакции |
close() | Закрывает соединение с базой данных |
Не волнуйтесь, если это пока looks как иностранный язык. Мы рассмотрим каждый из этих в деталях по мере продвижения!
Подключение к базе данных
Давайте начнем с подключения к нашей базе данных. Это как постучать в дверь и попросить впустить.
import psycopg2
try:
connection = psycopg2.connect(
database="mydb",
user="myuser",
password="mypassword",
host="localhost",
port="5432"
)
print("Соединение успешено!")
except (Exception, psycopg2.Error) as error:
print("Ошибка при подключении к PostgreSQL", error)
В этом коде мы:
- Импортируем модуль psycopg2
- Используем функцию
connect()
для установления соединения - Предоставляем необходимые данные, такие как имя базы данных, пользователь, пароль и т.д.
- Используем блок try-except для обработки возможных ошибок
Если все пройдет хорошо, вы должны увидеть "Соединение успешено!" выведенным. Поздравляю, вы только что открыли дверь к вашей базе данных!
Создание таблицы
Теперь, когда мы внутри, давайте создадим таблицу для хранения данных. Представьте, что вы устанавливаете полку для организации ваших книг.
try:
cursor = connection.cursor()
create_table_query = '''CREATE TABLE books
(ID INT PRIMARY KEY NOT NULL,
TITLE TEXT NOT NULL,
AUTHOR TEXT NOT NULL,
PUBLISHED_DATE DATE);'''
cursor.execute(create_table_query)
connection.commit()
print("Таблица создана успешно!")
except (Exception, psycopg2.Error) as error:
print("Ошибка при создании таблицы", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")
Вот что происходит:
- Мы создаем объект курсора, который resembles нашего помощника по базе данных
- Мы определяем наш SQL-запрос для создания таблицы 'books'
- Мы используем
execute()
для выполнения запроса - Мы
commit()
наши изменения, чтобы сделать их постоянными - Наконец, мы закрываем наш курсор и соединение, чтобы быть хорошими гражданами базы данных
Операция INSERT
Пора добавить несколько книг на нашу полку! Давайте вставим запись в нашу таблицу.
try:
cursor = connection.cursor()
insert_query = """ INSERT INTO books (ID, TITLE, AUTHOR, PUBLISHED_DATE)
VALUES (%s, %s, %s, %s)"""
record_to_insert = (1, "To Kill a Mockingbird", "Harper Lee", "1960-07-11")
cursor.execute(insert_query, record_to_insert)
connection.commit()
print("Запись inserted успешно")
except (Exception, psycopg2.Error) as error:
print("Ошибка при вставке данных", error)
В этом коде:
- Мы создаем наш INSERT-запрос с местодержателями (%s) для наших значений
- Мы определяем кортеж с значениями, которые мы хотим вставить
- Мы выполняем запрос, передавая наш кортеж значений
- Мы commit() наши изменения
Операция SELECT
Теперь давайте проверим нашу полку и посмотрим, что у нас есть!
try:
cursor = connection.cursor()
select_query = "SELECT * from books"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
print("ID:", row[0])
print("TITLE:", row[1])
print("AUTHOR:", row[2])
print("PUBLISHED DATE:", row[3], "\n")
except (Exception, psycopg2.Error) as error:
print("Ошибка при получении данных", error)
Вот что происходит:
- Мы создаем SELECT-запрос для получения всех записей из нашей таблицы 'books'
- Мы выполняем запрос
- Мы используем
fetchall()
для получения всех результатов - Мы循环 по результатам и выводим детали каждой книги
Операция UPDATE
Ой! Мы совершили ошибку. Давайте обновим запись, чтобы исправить это.
try:
cursor = connection.cursor()
update_query = """Update books set AUTHOR = %s where ID = %s"""
cursor.execute(update_query, ("Nelle Harper Lee", 1))
connection.commit()
print("Запись обновлена успешно")
except (Exception, psycopg2.Error) as error:
print("Ошибка при обновлении данных", error)
В этом коде:
- Мы создаем UPDATE-запрос с местодержателями для нового имени автора и ID
- Мы выполняем запрос с новыми значениями
- Мы commit() наши изменения
Операция DELETE
Наконец, давайте узнаем, как удалить книгу с нашей полки.
try:
cursor = connection.cursor()
delete_query = """Delete from books where ID = %s"""
cursor.execute(delete_query, (1,))
connection.commit()
print("Запись удалена успешно")
except (Exception, psycopg2.Error) as error:
print("Ошибка при удалении данных", error)
finally:
if connection:
cursor.close()
connection.close()
print("Соединение с PostgreSQL закрыто")
Вот что происходит:
- Мы создаем DELETE-запрос с местодержателем для ID
- Мы выполняем запрос с ID записи, которую мы хотим удалить
- Мы commit() наши изменения
- Наконец, мы закрываем наш курсор и соединение
И вот оно! Вы только что научились основам работы с PostgreSQL с помощью Python. Помните, что практика makes perfect, так что не бойтесь экспериментировать и пробовать разные вещи. Счастливого кодирования, и пусть ваши базы данных всегда будут в perfect порядке!
Credits: Image by storyset