Как подключить PostgreSQL в Python и зачем нужны базы данных для программирования
Рассказываем, как работать с PostgreSQL в Python и почему для этого мы используем именно модуль Psycopg2.
Во время разработки приложений часто нужно подключать и использовать базы данных для хранения информации. Самая распространенная база данных — PostgreSQL, поэтому мы расскажем, как работать в Python именно с ней. Для этого существует множество модулей, например:
- Psycopg2
- py-postgresql
- pg8000
Мы расскажем именно про модуль Psycopg2. И выбрали мы его по таким причинам:
- Распространенность — Psycopg2 использует большинство фреймворков Python
- Поддержка — Psycopg2 активно развивается и поддерживает основные версии Python
- Многопоточность — Psycopg2 позволяет нескольким потокам поддерживать одно и то же соединение
Установка Psycopg2
Для начала работы с модулем достаточно установить пакет при помощи pip:
pip install psycopg2-binary
Если в вашем проекте используется poetry, то при первоначальной настройке проекта нужно добавить psycopg2-binary
в зависимости. Для добавления в уже существующий проект воспользуйтесь командой:
poetry add psycopg2-binary
Использование Psycopg2
Подключение к БД:
Для подключения к существующей базе данных необходимо знать основную информацию о вашей БД. Если вы не знаете, где ее взять, то пройдите сначала наш большой курс по Основам баз данных:
- Username — имя пользователя, которое вы используете для работы с PostgreSQL
- Password — пароль, который используется пользователем
- Host Name — имя сервера или IP-адрес, на котором работает PostgreSQL
- Database Name — имя базы данных, к которой мы подключаемся.
Для подключения к базе данных мы используем метод connect()
, которому в качестве аргументов передаются вышеперечисленные данные:
import psycopg2 try: # пытаемся подключиться к базе данных conn = psycopg2.connect(dbname='test', user='postgres', password='secret', host='host') except: # в случае сбоя подключения будет выведено сообщение в STDOUT print('Can`t establish connection to database')
Также подключение к базе данных может осуществляться с помощью Connection URI:
import psycopg2 try: # пытаемся подключиться к базе данных conn = psycopg2. connect('postgresql://user:password@host:port/database_name') except: # в случае сбоя подключения будет выведено сообщение в STDOUT print('Can`t establish connection to database')
Читайте также: Вышел Python 3.11.0. В два раза быстрее, c детальным описанием ошибок и кучей новых типов
Взаимодействие Python с PostgreSQL
Итак, подключение к базе данных успешно выполнено. Дальше мы будем взаимодействовать с ней через объект
, который можно получить через метод cursor()
объекта соединения. Он помогает выполнять SQL-запросы из Python.
# получение объекта курсора cursor = conn.cursor()
С помощью cursor
происходит передача запросов базе данных:
# Получаем список всех пользователей cursor.execute('SELECT * FROM users') all_users = cursor.fetchall() cursor.close() # закрываем курсор conn.close() # закрываем соединение
Для получения результата после выполнения запроса используются следующие команды:
cursor. fetchone()
— вернуть одну строкуcursor.fetchall()
— вернуть все строкиcursor.fetchmany(size=10)
— вернуть указанное количество строк
Хорошей практикой при работе с базой данных является закрытие объекта cursor
и соединения с базой. Для автоматизации этого процесса удобно взаимодействовать через контекстный менеджер, используя конструкцию with
:
with conn.cursor as curs: curs.execute('SELECT * FROM users') all_users = cursor.fetchall()
В тот момент, когда объект cursor
выходит за пределы конструкции with
, происходит его закрытие и освобождение связанных с ним ресурсов.
По умолчанию результат возвращается в виде кортежа. Такое поведение возможно изменить, передав параметр cursor_factory
в момент открытия объекта cursor
, например, использовать NamedTupleCursor.
Это вернет данные в виде именованного кортежа:
from psycopg2. extras import NamedTupleCursor # … with conn.cursor(cursor_factory=NamedTupleCursor) as curs: curs.execute('SELECT * FROM users WHERE name=%s', (name='Alfred')) alfred = curs.fetchone() alfred # (id=10, name='Alfred', age='90') # …
Выполнение запросов
Psycopg2 преобразует переменные Python в SQL значения с учетом их типа. Все стандартные типы Python адаптированы для правильного представления в SQL.
Передача параметров в SQL-запрос происходит с помощью подстановки плейсхолдеров %s
и цепочки значений в качестве второго аргумента функции:
with conn.cursor() as curs: cusr.execute('SELECT id, name FROM users WHERE name=%s', ('John',)) curs.fetchall() # … with conn.cursor() as curs: cusr.execute(INSERT INTO users (name, age) VALUES (%s, %s), ('John', 19)) # … conn.close()
Подстановка значений в SQL-запрос используется для того, чтобы избежать атак типа SQL Injection. Также несколько полезных советов по построению запросов:
- Плейсхолдер должен быть
%s
даже если тип подставляемого значения отличается от строки - Не заключайте плейсходер в кавычки
- Если в запросе используется знак
%
, он должен быть указан как%%
Продолжайте учиться: На Хекслете есть несколько больших профессий, интенсивов и треков для джуниоров, мидлов и даже сеньоров: они позволят не только узнать новые технологии, но и прокачать уже существующие навыки
Посмотреть предложения Хекслета
Полный курс по работе с базой данных PostgreSQL для разработчиков и администраторов.
Проектирование и создавание БД Более 20 лет занимаюсь разработкой ПО на Java/Spring, C#, PHP.
Архитектор баз данных PostgreSQL, MongoDB, MSSQL, Oracle, MySQL, MariaDB, Couchbase и др.
Деплой БД как on-premise Google Cloud Platform, AWS, Azure, Yandex Cloud, так и Kubernetes, DBaaS, MultiCloud.
За это время было спроектировано и разработано более ста проектов для сетей магазинов, фитнес-центров, отелей, финансовом секторе.
Огромный опыт построения и эксплуатации систем виртуализации VmWare ESXi, Hyper-V.
Автор книг по PostgreSQL. Новинка «PostgreSQL 14. Оптимизация, Kubernetes, кластера, облака.»
20+ лет в разработке БД.
Предметные области: ERP, транспортная и складская логистика, системы анализа медиаданных, системы поддержки принятия решений.
Сертифицированный тренер PostgreSQL.
Начинал работу с базами данных с MS SQL Server, последние 8 лет работает с PostgreSQL
Более 8 лет работы с базами данных Postgres начиная с версий 9. 3. Практически во всех проектах, в которых принимал участие были цифровые карты.
Сейчас занимается настройкой и администрированием кластеров postgresql, кластеров ceph, настройкой мониторинга и алертинга, написанием плейбуков для ansible.
Руководитель группы системных администраторов в компании ФОРС Центр разработки.
Опыт работы в IT-индустрии более 15 лет, опыт преподавания более 20ти.В настоящее время:
-программист Центра интеллектуальных геоинформационных технологий (ЦИГИТ) ФГБОУ ВО «АГУ»;
— старший преподаватель кафедры Автоматизированных систем обработки информации и управления по направлениям «Программирование и основы алгоритмизации», «Базы данных», «Системы искусственного интеллекта»;
— соучредитель малого инновационного предприятия ООО «ФореСайс» — научные исследования в области естественных и технических наук, разработка программного обеспечения.
Навыки: программирование С/С++, Delphi; проектирование и разработка баз данных: СУБД MSVisualFoxPro, MSAccess, MSSQLServer, PostgreSQL.
Имеет 2 патента и 8 свидетельств о регистрации программ для ЭВМ
Более 10 лет опыта руководства подразделением по информационным технологиям. Опыт управления полным циклом работ по проектированию, реализации и внедрению информационных систем и инфраструктур в государственном секторе. Организация информационной безопасности, криптографической и антивирусной защиты организации.
Стек технологий: Oracle / PostgreSQL/MySQL, Unix / Solaris / Linux / Windows Server 2008+, Docker / Consul, MS Hyper-V / VMware ESXi, PHP / Perl / Delphi / JavaScript / Vue.js
Высшее педагогическое образование. Занимается коммерческой разработкой более 20 лет. Соучредитель и технический директор одного из крупнейших сервисов онлайн-регистрации бизнеса в России.
Стек: Java, PHP. Профессиональные интересы: функциональное программирование, типизация данных, разработка API.
База данных Azure для документации PostgreSQL
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
О базе данных Azure для PostgreSQL
Обзор
- Что такое база данных Azure для PostgreSQL?
Что нового
- Посетите наш блог
Отдельный сервер
Обзор
- Что такое единый сервер?
- Просмотреть всю документацию по одному серверу
Быстрый старт
- Создайте сервер с помощью портала Azure.
- Создайте сервер с помощью Azure CLI.
Концепция
- Концепции сервера
- Ограничения
Руководство
- Проектирование базы данных на одном сервере
- Создайте приложение Python (Django) с помощью PostgreSQL
- Мониторинг и настройка сервера
Гибкий сервер
Обзор
- Что такое гибкий сервер?
- Просмотреть всю документацию по гибкому серверу
- Попробуйте гибкий сервер бесплатно
Концепция
- Концепции сервера
- Общие сведения о вычислениях и хранении
- Ограничения
Быстрый старт
- Создайте сервер с помощью портала
- Создайте сервер с помощью шаблона ARM
Руководство
- Создайте приложение и сервер базы данных в виртуальной сети
Подключить и запросить
Концепция
- Включить правила брандмауэра для подключения
- Настройте SSL для безопасных соединений
Быстрый старт
- Подключиться с помощью Python
- Подключиться с помощью Node. js
- Подключиться с помощью Java
- Подключиться с помощью Ruby
- Подключиться с помощью PHP
- Подключиться через .Net
- Подключиться с помощью Go
Разработка приложений
Концепция
- Устойчивость соединения
Руководство
- Проектирование базы данных на одном сервере
№ по каталогу
Обучение
- Учебный модуль: Создание базы данных Azure для сервера PostgreSQL
Развертывать
- Сценарии Azure CLI для общих задач
- Шаблоны Azure Resource Manager
Ссылка
- Справочник разработчика Azure CLI
- Справочник разработчика REST API
Как запустить и настроить локальную базу данных PostgreSQL
Обзор
На этой странице объясняется, как установить и настроить сервер базы данных PostgreSQL и клиент командной строки psql
. В этом руководстве рассказывается, как установить и настроить эти компоненты на вашем компьютере для локального доступа.
Это руководство будет охватывать следующие платформы:
- настройка PostgreSQL на Windows
- разделы, соответствующие платформам, с которыми вы будете работать.
ОТНОСИТЕЛЬНО PRISMA.IO
Если у вас есть база данных PostgreSQL, вы можете использовать Prisma Client для управления ею из приложений JavaScript или TypeScript. Попробуйте наше руководство по началу работы с PostgreSQL, чтобы приступить к работе.
Настройка PostgreSQL в Windows
Проект PostgreSQL предоставляет собственный установщик Windows для установки и настройки вашей базы данных.
Посетите страницу установки PostgreSQL для Windows, чтобы найти ссылку на установщик. Нажмите Загрузите программу установки в начале страницы:
На следующей странице в столбцах Windows x86-64 или Windows x86-32 (в зависимости от архитектуры вашего компьютера) выберите нужную версию PostgreSQL. нравится устанавливать:
Нажмите Загрузите в выбранной вами версии и сохраните файл в удобном месте.
После завершения загрузки дважды щелкните файл, чтобы запустить программу установки (возможно, вам придется подтвердить, что вы хотите разрешить программе вносить изменения в ваш компьютер):
Нажмите Далее на начальной странице, чтобы начать настройку установки.
На следующей странице выберите каталог для установки:
Щелкните Далее , чтобы принять расположение по умолчанию.
На следующей странице вы можете выбрать, какие компоненты вы хотите установить. Вам необходимо выбрать как минимум PostgreSQL Server и Инструменты командной строки :
Нажмите Next , чтобы продолжить.
Теперь выберите место, где будут храниться файлы данных базы данных:
Щелкните Далее , чтобы принять расположение по умолчанию.
Затем выберите и подтвердите административный пароль для суперпользователя PostgreSQL (называется
postgres
):Нажмите Next , когда закончите.
Выберите порт, который будет прослушивать сервер:
Нажмите Далее , чтобы принять порт 5432 по умолчанию.
Теперь выберите локаль, которую будет использовать ваша база данных:
Нажмите Далее , чтобы использовать локаль вашего компьютера по умолчанию.
На этом этап настройки установки завершен. Вы можете просмотреть сводку сделанных вами выборов:
Если все выглядит правильно, нажмите Далее .
Наконец, PostgreSQL готов к установке:
Нажмите Далее , чтобы начать процесс установки.
После завершения установки вы можете проверить установку с помощью инструмента командной строки
psql
.В меню «Пуск» введите
psql
и щелкните инструмент, чтобы запустить программу. Вам будет предложено ввести детали подключения, которые вы хотите использовать.Нажмите Введите , чтобы принять параметры по умолчанию, указанные в квадратных скобках. Последним запросом будет пароль для пользователя
postgres
, которого вы настроили во время установки.После успешной аутентификации вы попадете в интерактивный сеанс
psql
с вашей базой данных.Когда вы закончите, выйдите из сеанса, введя:
Настройка PostgreSQL в macOS
Проект PostgreSQL предоставляет собственный установщик macOS для установки и настройки вашей базы данных.
Посетите страницу установки PostgreSQL для macOS, чтобы найти ссылку на установщик. Щелкните Загрузите программу установки в начале раздела Interactive Installer by EnterpriseDB :
На следующей странице в столбце Mac OS X выберите версию PostgreSQL, которую вы хотите установить:
Нажмите Загрузите в выбранной вами версии и сохраните файл в удобном месте.
После завершения загрузки найдите DMG установщика PostgreSQL в папке «Загрузки». Дважды щелкните загруженный файл DMG, чтобы смонтировать архив установщика:
В смонтированном архиве щелкните пакет установщика PostgreSQL (вам может быть предложено подтвердить, что вы хотите, чтобы пакет мог вносить изменения в ваш компьютер):
Программа установки PostgreSQL откроется с приветствием screen:
Щелкните Next на начальной странице, чтобы начать настройку установки.
На следующей странице выберите каталог для установки:
Нажмите Далее , чтобы принять местоположение по умолчанию.
На следующей странице вы можете выбрать, какие компоненты вы хотите установить. Вам необходимо выбрать как минимум PostgreSQL Server и Инструменты командной строки :
Нажмите Next , чтобы продолжить.
Теперь выберите место, где будут храниться файлы данных базы данных:
Щелкните Далее , чтобы принять расположение по умолчанию.
На следующей странице выберите и подтвердите административный пароль для суперпользователя PostgreSQL (называется
postgres
):Нажмите Next , когда закончите.
На следующей странице можно выбрать порт, который сервер будет прослушивать:
Нажмите Далее , чтобы принять порт 5432 по умолчанию.
Теперь выберите локаль, которую будет использовать ваша база данных:
Нажмите Далее , чтобы использовать локаль вашего компьютера по умолчанию.
На этом этап настройки установки завершен. Вы можете просмотреть сводку сделанных вами выборов:
Если все выглядит правильно, нажмите Далее .
PostgreSQL готов к установке:
Нажмите Далее , чтобы начать процесс установки.
Программа установки подтвердит завершение после завершения процесса:
Теперь, когда PostgreSQL установлен, вы можете проверить установку с помощью инструмента командной строки
psql
. Пока этот клиент установлен, нам нужно изменить настройки нашего терминала.0163 PATH переменная для быстрого доступа к ней.Для начала откройте новое окно терминала. Сначала найдите каталог PostgreSQL
bin
, введя:ls -d /Library/PostgreSQL/*/bin
Ответом будет каталог вашего каталога PostgreSQL
bin
. Например:/Library/PostgreSQL/12/bin
Теперь, когда вы знаете, какой каталог использовать, отредактируйте файл
/etc/paths
, набрав:sudo nano /etc/paths
Вам будет предложено ввести административный пароль вашего компьютера для продолжения:
Добавьте путь к каталогу
bin
, который вы нашли, в конец файла:6003
Когда вы закончите, сохраните и закройте файл, набрав CTL-X , Y и нажав ENTER .
Чтобы использовать новые настройки
PATH
, откройте новое окно терминала. В новом окне введите:psql -U postgres
Вам будет предложено ввести административный пароль пользователя
postgres
, который вы установили в процессе настройки PostgreSQL:сеанс с вашей базой данных.
Чтобы выйти из сеанса после завершения, введите:
Настройка PostgreSQL в Linux
Методы установки различаются в зависимости от используемого вами дистрибутива Linux. Следуйте разделу ниже, который соответствует вашему дистрибутиву Linux.
- Debian и Ubuntu
- Установка с использованием репозиториев Debian или Ubuntu’s Default
- с использованием репозиториев Debian и Ubuntu Project Project и Ubunt и репозитории Fedora
Debian и Ubuntu
Вы можете либо использовать версию PostgreSQL, доступную в репозиториях вашего дистрибутива по умолчанию, либо использовать репозитории, предоставленные проектом PostgreSQL. Пакеты в репозитории по умолчанию протестированы на совместимость со всем другим программным обеспечением, поставляемым для вашего дистрибутива, но могут быть устаревшими. Пакеты из проекта PostgreSQL будут более актуальными, но могут потребовать дополнительной настройки.
- Установка с использованием репозиториев Debian или Ubuntu по умолчанию.
- Установка с использованием репозиториев Debian и Ubuntu проекта PostgreSQL. Версия PostgreSQL может быть старше, чем те, которые можно найти на веб-сайте PostgreSQL, но это самый простой способ установки в этих дистрибутивах.
Чтобы установить сервер PostgreSQL, обновите локальный кэш пакетов вашего компьютера, добавив последний набор пакетов. После этого установите пакет
postgresql
:sudo apt update
sudo apt install postgresql
По умолчанию PostgreSQL настроен на использование одноранговой аутентификации, которая позволяет пользователям входить в систему, если их имя пользователя в операционной системе совпадает. внутреннее имя PostgreSQL.
В процессе установки был создан пользователь операционной системы с именем
postgres
, чтобы соответствовать учетной записи администратора базы данныхpostgres
. Чтобы войти в PostgreSQL с помощью клиентаpsql
, используйтеsudo
для запуска команды от имени пользователяpostgres
:sudo -u postgres psql
2 Когда вы закончите работу с sql3 psql 90, , введя:
Установите с помощью репозиториев Debian и Ubuntu проекта PostgreSQL
Если вам нужна более современная версия PostgreSQL, вы можете использовать репозитории, поддерживаемые проектом PostgreSQL, вместо тех, которые предоставляются вашим дистрибутивом Linux. .
Сначала добавьте новое определение репозитория в свою систему, набрав:
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(. /etc/os-release; echo $ VERSION_CODENAME)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
Затем добавьте ключ подписи пакета PostgreSQL в
apt
, чтобы он доверял пакетам в новом репозитории:wget -- тихий -O - https://www. postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-ключ добавить -
После настройки репозитория вы можете обновить локальный индекс пакетов, а затем установить PostgreSQL, введя:
sudo apt update
sudo apt install postgresql
По умолчанию PostgreSQL настроен на использование peerSQL аутентификация, которая позволяет пользователям входить в систему, если их имя пользователя в операционной системе совпадает с внутренним именем PostgreSQL.
В процессе установки был создан пользователь операционной системы с именем
postgres
, чтобы соответствовать административной учетной записи базы данных postgres. Чтобы войти в PostgreSQL с помощью клиента
psql
, используйтеsudo
для запуска команды от имени пользователяpostgres
:sudo -u postgres psql
2 Когда вы закончите работу с sql3 psql 90, , введя: - Debian и Ubuntu
- Установка с использованием репозиториев CentOS или Fedora по умолчанию
- Установка с использованием репозиториев CentOS и Fedora проекта PostgreSQL
CentOS и Fedora
Вы можете либо использовать версию PostgreSQL, доступную в репозиториях вашего дистрибутива по умолчанию, либо использовать репозитории, предоставленные проектом PostgreSQL. Пакеты в репозитории по умолчанию протестированы на совместимость со всем другим программным обеспечением, поставляемым для вашего дистрибутива, но могут быть устаревшими. Пакеты из проекта PostgreSQL будут более актуальными, но могут потребовать дополнительной настройки.
Установка с использованием репозиториев CentOS или Fedora по умолчанию
И CentOS, и Fedora предоставляют версии сервера PostgreSQL в виде пакетов по умолчанию. Версия PostgreSQL может быть старше, чем те, которые можно найти на веб-сайте PostgreSQL, но это самый простой способ установки в этих дистрибутивах.
Для установки Postgresql Server используйте диспетчер пакетов Distribution для установки MySQL-Server
Пакет:
для Centos Используйте Yum
Manager:
Sudo stuctred stuctred stuctress studge:
Sudo Yum stall standgresqustgresql-ser. Fedora используйте диспетчер пакетов
dnf
:sudo dnf install postgresql-server
После установки пакета MySQL инициализируйте базу данных, набрав:
Sudo postgresql-setup initdb
Впоследствии запустите службу с набора типинга:
Sudo SystemCtl Postgresql.service
.
sudo systemctl enable postgresql.service
По умолчанию PostgreSQL настроен на использование одноранговой аутентификации, которая позволяет пользователям входить в систему, если имя пользователя их операционной системы совпадает с внутренним именем PostgreSQL.
В процессе установки был создан пользователь операционной системы с именем
postgres
, соответствующий учетной записи администратора базы данныхpostgres
. Чтобы войти в PostgreSQL с помощью клиентаpsql
, используйтеsudo
для запуска команды от имени пользователяpostgres
:2 Когда вы закончите работу с sql3 psql 90, , введя:sudo -u postgres psql
Установка с использованием репозиториев CentOS и Fedora проекта PostgreSQL
Если вам нужна более современная версия PostgreSQL, вы можете использовать репозитории, поддерживаемые проектом PostgreSQL, вместо репозиториев, предоставляемых вашим дистрибутивом Linux.
Чтобы настроить репозиторий проекта PostgreSQL, загрузите и установите пакет установки репозитория в свой терминал.
Для CentOS выполните следующую команду:
sudo yum install "https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(. /etc/os-release; echo $VERSION_ID)-x86_64/pgdg-redhat-repo-latest.noarch.rpm"
Для Fedora используйте эту команду:
sudo dnf install "https://download.postgresql.org/pub/repos/yum/reporpms/F-$(. /etc/os-release; echo $VERSION_ID)-x86_64/pgdg-fedora-repo-latest.noarch.rpm"
Если вы используете CentOS 8 , вы также должны отключить системный модуль PostgreSQL, чтобы он не мешал версии PostgreSQL в репозитории. . Для этого введите:
модуль sudo yum отключить postgresql
Затем выберите нужную версию PostgreSQL.
для Centos , проверьте, какие версии PostgreSQL доступны путем набора текста:
yum postgresql*-server
для Fedora УПРАВЛЕНИЕ
DNF
для FDORA . *-server
Решив, какую версию использовать, вы можете установить ее с помощью менеджера пакетов.
Для CentOS используйте менеджер пакетов
yum
. Например, чтобы установить PostgreSQL 12, введите:sudo yum install postgresql12-server
Для Fedora используйте менеджер пакетов
dnf
. Например, чтобы установить PostgreSQL 12, введите:sudo dnf install postgresql12-server
После установки пакета PostgreSQL инициализируйте базу данных:
sudo /usr/pgsql-*/bin/postgresql-*-setup initdb
Найдите имя файла модуля systemd для вашей версии PostgreSQL:
systemctl list-unit-files | grep postgresql
Запустите службу, используя найденный файл модуля. Например, для PostgreSQL 12 это будет:
sudo systemctl start postgresql-12.