Как подключить базу данных PostgreSQL?

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как подключить базу данных PostgreSQL? Полное руководство для Python-разработчиков

Работа с базами данных — ключевая часть любого современного программного проекта. PostgreSQL — одна из самых популярных реляционных СУБД, которая отличается надёжностью, высокой производительностью и богатым функционалом.

В этой статье мы подробно разберём, как подключить базу данных PostgreSQL в Python, работать с данными с помощью SELECT и DELETE, и рассмотрим использование библиотеки psycopg2 с примерами. Также затронем тему работы с SQLite и её отличия от PostgreSQL.


Почему выбирают PostgreSQL?

  • Поддержка сложных SQL-запросов.

  • Высокая надёжность и безопасность.

  • Поддержка транзакций, индексов, триггеров и представлений.

  • Отличная масштабируемость для крупных проектов.


Установка PostgreSQL и настройка пользователя

  1. Установка PostgreSQL:

bash
sudo apt update sudo apt install postgresql postgresql-contrib
  1. Создание базы данных и пользователя:

sql
CREATE DATABASE my_database; CREATE USER my_user WITH PASSWORD 'my_password'; GRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;

Как подключиться к базе данных PostgreSQL из Python?

Для этого чаще всего используют библиотеку psycopg2.

📦 Установка библиотеки:

bash
pip install psycopg2

Или если нужны бинарные колеса (для Windows):

bash
pip install psycopg2-binary

📚 Пример подключения к базе данных:

python
import psycopg2 try: connection = psycopg2.connect( database="my_database", user="my_user", password="my_password", host="localhost", port="5432" ) print("Подключение успешно установлено!") except Exception as e: print(f"Ошибка подключения: {e}") finally: if connection: connection.close() print("Соединение закрыто.")

Выполнение SQL-запросов в PostgreSQL через Python

1. Выполнение SELECT-запроса (python postgresql select)

python
import psycopg2 connection = psycopg2.connect( database="my_database", user="my_user", password="my_password", host="localhost", port="5432" ) cursor = connection.cursor() cursor.execute("SELECT * FROM employees;") rows = cursor.fetchall() for row in rows: print(row) cursor.close() connection.close()

2. Выполнение DELETE-запроса (аналог delete sqlite3 python)

python
import psycopg2 connection = psycopg2.connect( database="my_database", user="my_user", password="my_password", host="localhost", port="5432" ) cursor = connection.cursor() try: cursor.execute("DELETE FROM employees WHERE id = %s;", (1,)) connection.commit() print("Запись успешно удалена.") except Exception as e: connection.rollback() print(f"Ошибка удаления: {e}") cursor.close() connection.close()

📌 Важно! Никогда не вставляйте параметры напрямую в строку запроса — используйте плейсхолдеры %s для защиты от SQL-инъекций.


Что такое psycopg2? (psycopg2 документация на русском)

psycopg2 — это самая популярная библиотека для работы с PostgreSQL в Python.

Её основные возможности:

  • Полная поддержка транзакций.

  • Работа с большими объёмами данных.

  • Поддержка пулов соединений.

  • Возможность работы с асинхронными запросами.

Официальная документация:
https://www.psycopg.org/docs/

К сожалению, на русском языке полноценной официальной документации нет, но есть множество качественных переводов и руководств на форумах и в блогах.


Примеры более сложных операций с базой данных

1. Использование параметризованных запросов

python
user_id = 5 cursor.execute("SELECT * FROM employees WHERE id = %s;", (user_id,))

2. Вставка данных

python
cursor.execute( "INSERT INTO employees (name, position) VALUES (%s, %s);", ("Иван Иванов", "Разработчик") ) connection.commit()

Работа с SQLite в Python и отличие от PostgreSQL

SQLite — это встраиваемая СУБД, которая не требует отдельного сервера и часто используется в небольших проектах.

📚 Пример работы с SQLite (delete sqlite3 python):

python
import sqlite3 connection = sqlite3.connect('my_database.db') cursor = connection.cursor() cursor.execute("DELETE FROM employees WHERE id = ?", (1,)) connection.commit() cursor.close() connection.close()

📌 Отличия PostgreSQL и SQLite:

Параметр PostgreSQL SQLite
Масштабируемость Высокая Низкая
Производительность Высокая (серверная) Низкая (локальная)
Поддержка транзакций Да Да, но ограничена
Использование Крупные проекты Прототипы, мобильные приложения

FAQ — Часто задаваемые вопросы

1. Что делать, если не удаётся подключиться к PostgreSQL?

  • Проверьте правильность указанных параметров подключения.

  • Убедитесь, что сервер PostgreSQL запущен.

  • Разрешите подключения в pg_hba.conf и откройте нужный порт в файрволле.


2. Как отключить автокоммит в psycopg2?

python
connection.autocommit = False

3. Как включить пул соединений в psycopg2?

python
from psycopg2 import pool connection_pool = pool.SimpleConnectionPool(1, 10, user="my_user", password="my_password", host="localhost", port="5432", database="my_database" )

4. Можно ли использовать ORM вместо psycopg2?

Да, популярный выбор — SQLAlchemy или Django ORM, которые упрощают работу с БД.


5. Как получить список всех таблиц в базе данных?

python
cursor.execute( "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';" ) print(cursor.fetchall())

6. Что делать при ошибке 'psycopg2.OperationalError'?

Проверьте доступность сервера базы данных, правильность пароля и имени пользователя, а также параметры подключения.


Заключение

Теперь вы знаете, как подключаться к базе данных PostgreSQL из Python, выполнять основные SQL-запросы, обрабатывать данные и даже оптимизировать работу с помощью пулов соединений. Используйте psycopg2 для эффективной и безопасной работы с базами данных.

Если вам предстоит работать с небольшими локальными проектами — изучите возможности SQLite, но для серьёзных и нагруженных проектов обязательно выбирайте PostgreSQL.

Новости