Как подключить postgresql к python

Работа с PostgreSQL в Python

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

Модуль psycopg2

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

Подключение к базе данных

Чтобы подключиться к вашей базе данных, вы должны сначала создать объект подключения, представляющий базу данных. Затем вы должны создать объект курсора, чтобы помочь вам в выполнении ваших операторов SQL.

В следующем примере показано, как установить соединение с базой данных с именем «postgres»:

В результате получим:

Ниже приведен список параметров, которые были переданы методу connect() :

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

Создание таблицы

Следующий пример демонстрирует это:

В результате получим:

Этот метод commit() помогает нам применить изменения, которые мы внесли в базу данных, и эти изменения не могут быть отменены, если commit() выполнится успешно. Метод close() закрывает соединение с базой данных.

На данный момент мы создали таблицу с 4 столбцами, каждый из которых имеет различные типы данных. Приведенный выше вывод показывает, что таблица была успешно создана.

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

Вот пример этого в действии:

В результате получим:

После запуска этого кода мы вставили одну запись в нашу таблицу базы данных. Это было сделано путем указания имени таблицы, а также столбцов, в которые нам нужно вставить данные. Мы также можем вставить несколько записей одной командой. Например:

В результате получим:

Извлечение данных

В результате получим:

Обновление таблиц

В результате получим:

В приведенном выше примере мы обновили значение столбца AGE для всех строк, для которых установлено значение ADMISSION 3420. После выполнения обновления мы извлекаем эти данные, чтобы убедиться, что соответствующие строки / столбцы были обновлены.

Удаление строк

В результате получим:

В этом примере мы удалили все записи, в которых регистрационный номер учащегося равен 3420, что в данном случае составляет всего одну строку. После извлечения данных с помощью SELECT мы видим, что эта запись не является частью вышеприведенного вывода, подтверждая, что она была удалена из базы данных.

Заключение

Источник

Python и PostgreSQL: как получить доступ к базе данных PostgreSQL

PostgreSQL является удивительным и современным R elational D atabase М ПРАВЛЕНИЕ S ystem (СУБД). Он также является базой данных с открытым исходным кодом. PostgreSQL — кроссплатформенный. Вы можете очень легко установить PostgreSQL в Windows, Mac OS и Linux.

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

В этой статье я покажу вам, как получить доступ к базе данных PostgreSQL с помощью Python в Linux. Я собираюсь использовать Debian 9 Stretch в качестве операционной системы и языка программирования Python 3. Версия базы данных PostgreSQL, которую я собираюсь использовать, — PostgreSQL 9.6. Итак, приступим.

Предварительные условия:

Вы можете найти множество статей на linuxhint.com, которые могут помочь вам настроить PostgreSQL и установить Python + PIP в ваш любимый дистрибутив Linux. Просто ищи это.

Создание базы данных и пользователя PostgreSQL

В этом разделе я покажу вам, как создать базу данных PostgreSQL и пользователя в Linux. Мы будем подключаться к этой базе данных из Python позже в этой статье.

Сначала узнайте свое имя пользователя для входа с помощью следующей команды:

Как видите, мое имя пользователя для входа — shovon. Ваш будет другим. Обязательно запишите это, так как оно вам понадобится позже.

Теперь запустите интерактивный терминал PostgreSQL с помощью следующей команды:

Должен запуститься интерактивный терминал PostgreSQL.

Теперь создайте базу данных PostgreSQL pyapp с помощью следующей команды SQL:

postgres = # CREATE DATABASE pyapp;

Pyapp база данных должна быть создана.

Теперь вам нужно создать нового пользователя PostgreSQL. Также убедитесь, что имя пользователя совпадает с вашим логином.

Создайте нового пользователя PostgreSQL с помощью следующей команды SQL:

postgres = # CREATE USER your_login_username WITH ENCRYPTED PASSWORD ‘your_password’ ;

ПРИМЕЧАНИЕ: замените your_login_username и your_password своим собственным именем пользователя и паролем для входа.

Должен быть создан пользователь PostgreSQL.

Теперь предоставьте вновь созданному пользователю все привилегии для только что созданной базы данных pyapp с помощью следующей команды SQL:

postgres = # GRANT ALL ON DATABASE pyapp TO your_login_username;

Все привилегии для базы данных pyapp предоставлены вашему пользователю, входящему в систему.

Читайте также:  Эластан и лайкра чем отличаются

Теперь выйдите из терминала PostgreSQL с помощью следующей команды:

Теперь давайте посмотрим, сможем ли мы войти в нашу недавно созданную базу данных pyapp, используя наше имя пользователя, с помощью следующей команды:

Вы должны войти в систему.

Установка psycopg2 с PIP и PIP3

Пришло время установить модуль Python psycopg2.

Если вы используете Python 3, выполните следующую команду для установки psycopg2 :

Если вы используете Python 2, выполните следующую команду для установки psycopg2 :

Должен быть установлен модуль psycopg2-binary PIP.

Создание каталога проекта

Теперь создайте каталог проекта pyapp с помощью следующей команды:

И перейдите в каталог с помощью следующей команды:

Здесь я создам весь сценарий Python для доступа к базе данных PostgreSQL.

Подключение к базе данных PostgreSQL

Сначала создайте программу на Python connect.py в каталоге вашего проекта.

Теперь введите следующие строки и сохраните файл.

Теперь запустите сценарий connect.py с помощью одной из следующих команд:

Как видите, я подключен к базе данных.

Здесь, в строке 1, импортируется модуль psycopg2. В строке 4 для подключения к базе данных PostgreSQL используется метод psycopg2.connect (). Блок try-except используется для обнаружения ошибок, если что-то пойдет не так и соединение с базой данных не удастся.

Выполнение команд SQL

В этом разделе я создам простую таблицу пользователей с помощью Python psycopg2.

Введите следующий код в новый скрипт Python create_table.py и сохраните его.

Теперь запустим скрипт:

Как видите, таблица users создана.

С psycopg2, если вы хотите выполнить команду SQL, сначала вам нужно создать курсор.

В строке 9 я создал курсор с помощью метода conn.cursor () и сохранил его в переменной cur. Здесь conn — это переменная, в которой я сохранил соединение с базой данных из метода psycopg2.connect ().

Затем вы выполняете команду SQL с курсором как cur.exec («YOUR_SQL_GOES_HERE»), что я сделал в строке 12-17 для создания таблицы пользователей.

Если ваша команда SQL вносит изменения в базу данных, к которой вы подключены, вам нужно вызвать метод conn.commit (), чтобы сделать изменения постоянными, как я сделал в строке 19.

Вставка данных в базу данных PostgreSQL

Теперь, когда у вас есть таблица пользователей, давайте вставим в нее некоторые данные.

Создайте новый файл insert.py в каталоге вашего проекта, введите следующие коды и сохраните файл.

Теперь запустите скрипт Python insert.py следующим образом:

Данные должны быть вставлены.

Как вы можете видеть в терминале PostgreSQL.

В сценарии insert.py строка 12 метод cur.execute () запускает SQL-запрос для вставки в таблицу пользователей. % S «ы заменяется строками из кортежа, второй параметр cur.execute () методы.

Первое вхождение % s заменяется первым элементом кортежа, второе % s заменяется вторым элементом кортежа и так далее. Вы также можете смешивать типы данных, если хотите. Например, % d представляет собой целое число.

Получение данных из базы данных PostgreSQL

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

Сначала создайте новый скрипт Python fetch.py и введите следующие строки кода. Затем сохраните файл.

Теперь запустите скрипт fetch.py ​​с помощью следующей команды:

Как видите, данные, которые я вставил, были извлечены. Он возвращается как кортеж, что-то вроде массива.

Источник

Краткое руководство. Подключение к Базе данных Azure для PostgreSQL (Гибкий сервер) и запрашивание данных с помощью Python

Из этого краткого руководства вы узнаете, как подключиться к Базе данных Azure для PostgreSQL (Гибкий сервер) с использованием Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.

В этой статье предполагается, что у вас уже есть опыт разработки на языке Python, но вы только начали работу с Базой данных Azure для PostgreSQL (Гибкий сервер).

Предварительные требования

Подготовка клиентской рабочей станции

Установка библиотек Python для PostgreSQL

Модуль psycopg2 позволяет подключаться к базе данных PostgreSQL и выполнять запросы к ней. Он доступен в виде пакета Wheel для Linux, macOS или Windows. Установите двоичную версию модуля, включая все зависимости. Дополнительные сведения об установке psycopg2 и о предварительных требованиях см. на этой странице.

Получение сведений о подключении к базе данных

Чтобы подключиться к Базе данных Azure для PostgreSQL (Гибкий сервер), требуется полное имя сервера и учетные данные для входа. Эти сведения можно получить на портале Azure.

На портале Azure найдите и выберите имя гибкого сервера.

На странице Обзор сервера скопируйте полное имя сервера и имя администратора. Полное имя сервера всегда имеет формат .postgres.database.azure.com.

Кроме того, потребуется пароль администратора. Если вы не помните этот пароль, вы можете сбросить его на странице обзора.

Читайте также:  что передвигается по сосудам древесины

Выполнение примеров кода Python

Для каждого примера кода в этой статье сделайте следующее:

Создайте файл в текстовом редакторе.

Добавьте пример кода в файл. В коде замените:

Сохраните файл в папке проекта с расширением PY, например postgres-insert.py. При сохранении файла в ОС Windows обязательно выберите кодировку UTF-8.

Создание таблицы и вставка данных

В приведенном ниже примере кода устанавливается подключение к базе данных в службе «База данных Azure для PostgreSQL (Гибкий сервер)» с помощью функции psycopg2.connect и загружаются данные с помощью инструкции SQL INSERT. Функция cursor.execute выполняет SQL-запрос к базе данных.

При успешном выполнении кода возвращаются следующие данные:

Источник

Работа с PostgreSQL в Python

PostgreSQL, пожалуй, это самая продвинутая реляционная база данных в мире Open Source Software. По своим функциональным возможностям она не уступает коммерческой БД Oracle и на голову выше собрата MySQL.

Если вы создаёте на Python веб-приложения, то вам не избежать работы с БД. В Python самой популярной библиотекой для работы с PostgreSQL является psycopg2. Эта библиотека написана на Си на основе libpq.

Установка

Тут всё просто, выполняем команду:

Для тех, кто не хочет ставить пакет прямо в системный python, советую использовать pyenv для отдельного окружения. В Unix системах установка psycopg2 потребует наличия вспомогательных библиотек (libpq, libssl) и компилятора. Чтобы избежать сборки, используйте готовый билд:

Но для production среды разработчики библиотеки рекомендуют собирать библиотеку из исходников.

Начало работы

Для выполнения запроса к базе, необходимо с ней соединиться и получить курсор:

Через курсор происходит дальнейшее общение в базой.

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

Также курсор является итерируемым объектом, поэтому можно так:

Хорошей практикой при работе с БД является закрытие курсора и соединения. Чтобы не делать это самому, можно воспользоваться контекстным менеджером:

Формирование запросов

Зачастую в БД выполняются запросы, сформированные динамически. Psycopg2 прекрасно справляется с этой работой, а также берёт на себя ответственность за безопасную обработку строк во избежание атак типа SQL Injection:

Метод execute вторым аргументом принимает коллекцию (кортеж, список и т.д.) или словарь. При формировании запроса необходимо помнить, что:

Именованные аргументы можно писать так:

Модуль psycopg2.sql

Начиная с версии 2.7, в psycopg2 появился модуль sql. Его цель — упростить и обезопасить работу при формировании динамических запросов. Например, метод execute курсора не позволяет динамически подставить название таблицы.

Транзакции

По умолчанию транзакция создаётся до выполнения первого запроса к БД, и все последующие запросы выполняются в контексте этой транзакции. Завершить транзакцию можно несколькими способами:

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Источник

Как подружить Python и базы данных SQL. Подробное руководство

Leo Matyushkin

Все приложения взаимодействуют с данными, чаще всего через систему управления базами данных (СУБД). Одни языки программирования поставляются с модулями для работы с СУБД, другие требуют использования сторонних пакетов. Из этого подробного руководства вы узнаете о различных библиотеках Python для работы с SQL-базами данных. Мы разработаем простое приложение для взаимодействия с БД SQLite, MySQL и PostgreSQL.

Примечание. Если вы не разбираетесь в базах данных, советуем обратить внимание на следующие публикации Библиотеки программиста: 11 типов современных баз данных, SQL за 20 минут, Подборка материалов для изучения баз данных и SQL.

Из этого пособия вы узнаете:

Чтобы получить максимальную отдачу от этого учебного пособия, необходимо знать основы Python, SQL и работы с СУБД. Вы также должны иметь возможность загружать и импортировать пакеты в Python и знать, как устанавливать и запускать серверы БД локально или удаленно.

В каждом разделе по три подраздела: SQLite, MySQL и PostgreSQL.

1. Схема базы данных для обучения

В этом уроке мы разработаем очень маленькую базу данных приложения для социальных сетей. База данных будет состоять из четырех таблиц:

Схема базы данных показана на рисунке ниже.

2. Подключение к базам данных

Примечание. Для выполнения разделов о MySQL и PostgreSQL необходимо самостоятельно запустить соответствующие серверы. Для быстрого ознакомления с тем, как запустить сервер MySQL, ознакомьтесь с разделом MySQL в публикации Запуск проекта Django (англ.). Чтобы узнать, как создать базу данных в PostgreSQL, перейдите к разделу Setting Up a Database в публикации Предотвращение атак SQL-инъекций с помощью Python (англ.).

SQLite

SQLite, вероятно, является самой простой базой данных, к которой можно подключиться с помощью Python, поскольку для этого не требуется устанавливать какие-либо внешние модули. По умолчанию стандартная библиотека Python уже содержит модуль sqlite3.

Читайте также:  Медицинское обрезание у мужчин для чего

Более того, SQLite база данных не требует сервера и самодостаточна, то есть просто читает и записывает данные в файл. Подключимся с помощью sqlite3 к базе данных:

Вот как работает этот код:

MySQL

Обратите внимание, что MySQL – это серверная система управления базами данных. Один сервер MySQL может хранить несколько баз данных. В отличие от SQLite, где соединение равносильно порождению БД, формирование базы данных MySQL состоит из двух этапов:

Определим функцию, которая будет подключаться к серверу MySQL и возвращать объект подключения:

Вот как выглядит эта функция:

Создадим базу данных sm_app для нашего приложения на сервере MySQL:

PostgreSQL

Как и в случае MySQL, для PostgreSQL в стандартной библиотеке Python нет модуля для взаимодействия с базой данных. Но и для этой задачи есть решение – модуль psycopg2 :

Определим функцию create_connection() для подключения к базе данных PostgreSQL:

Запустив вышеприведенный скрипт, мы увидим базу данных sm_app на своем сервере PostgreSQL. Подключимся к ней:

Здесь 127.0.0.1 и 5432 это соответственно IP-адресу и порт хоста сервера.

3. Создание таблиц

В предыдущем разделе мы увидели, как подключаться к серверам баз данных SQLite, MySQL и PostgreSQL, используя разные библиотеки Python. Мы создали базу данных sm_app на всех трех серверах БД. В данном разделе мы рассмотрим, как формировать таблицы внутри этих трех баз данных.

Как обсуждалось ранее, нам нужно получить и связать четыре таблицы:

SQLite

Примечание. Описываемый далее скрипт – часть того же файла, в котором мы описали соединение с базой данных SQLite.

Итак, начнем с определения функции execute_query() :

Теперь напишем передаваемый запрос ( query ):

В запросе говорится, что нужно создать таблицу users со следующими пятью столбцами:

Следующий запрос используется для создания таблицы posts:

Наконец, формируем следующим скриптом таблицы comments и likes :

MySQL

Описываем таблицу users :

Запрос для реализации отношения внешнего ключа в MySQL немного отличается от SQLite. Более того, MySQL использует ключевое слово AUTO_INCREMENT для указания столбцов, значения которых автоматически увеличиваются при вставке новых записей.

PostgreSQL

Применение библиотеки psycopg2 в execute_query() также подразумевает работу с cursor :

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

Создадим внутри базы данных sm_app таблицу users :

4. Вставка записей

В предыдущем разделе мы разобрали, как развертывать таблицы в базах данных SQLite, MySQL и PostgreSQL с использованием различных модулей Python. В этом разделе узнаем, как вставлять записи.

SQLite

Вставим в таблицу posts шесть записей:

Следующий скрипт вставляет записи в таблицы comments и likes :

MySQL

Посмотрите на следующий пример, который вставляет две записи в таблицу likes :

PostgreSQL

Следующий скрипт вставляет записи в таблицу posts :

5. Извлечение данных из записей

SQLite

SELECT

Давайте выберем все записи из таблицы users :

Примечание. Не рекомендуется использовать SELECT * для больших таблиц, так как это может привести к большому числу операций ввода-вывода, которые увеличивают сетевой трафик.

Результат вышеприведенного запроса выглядит следующим образом:

Таким же образом вы можете извлечь все записи из таблицы posts :

Вывод выглядит так:

Вы также можете выполнять более сложные запросы, включающие операции типа JOIN для извлечения данных из двух связанных таблиц. Например, следующий скрипт возвращает идентификаторы и имена пользователей, а также описание сообщений, опубликованных этими пользователями:

Следующий скрипт возвращает все сообщения вместе с комментариями к сообщениям и именами пользователей, которые разместили комментарии:

Вывод выглядит так:

Вывод выглядит так:

WHERE

MySQL

Процесс выбора записей в MySQL абсолютно идентичен процессу выбора записей в SQLite:

Теперь выберем все записи из таблицы users :

Вывод будет похож на то, что мы видели с SQLite.

PostgreSQL

Опять же, результат будет похож на то, что мы видели раньше.

6. Обновление записей таблицы

SQLite

Увидим следующий вывод:

Следующий скрипт обновит описание:

То есть запись была обновлена.

MySQL

Процесс обновления записей в MySQL с помощью модуля mysql-connector-python является точной копией модуля sqlite3 :

PostgreSQL

Запрос на обновление PostgreSQL аналогичен SQLite и MySQL.

7. Удаление записей таблицы

SQLite

В качестве примера удалим комментарий с id равным 5:

Заключение

Однако это лишь вершина айсберга! Существуют также библиотеки для работы с SQL и объектно-реляционными отображениями, такие как SQLAlchemy и Django ORM, которые автоматизируют задачи взаимодействия Python с базами данных.

Если вам интересна тематика работы с базами данных с помощью Python, напишите об этом в комментариях – мы подготовим дополнительные материалы.

Источник

Познавательно-развлекательный портал