Рубрики
Без рубрики

Настройка PostgreSQL с Python 3 и psycopg в Ubuntu 16.04

Руководство по установке и использованию PostgreSQL с Python 3 и psycopg2 в Ubuntu 16.04 Xenial Xerus.

Автор оригинала: Matt Makai.

PostgreSQL – мощный открытый исходный код реляционная база данных, часто используемая для создания, чтения, обновлять и удалять данные веб-приложения Python. Psycopg2 – это база данных PostgreSQL. драйвер, который служит клиентом Python для доступа к серверу PostgreSQL. В этом посте объясняется, как установить PostgreSQL в Ubuntu 16.04. и выполнить несколько базовых SQL-запросов в программе Python.

Мы не будем покрывать объектно-реляционные преобразователи (ORM) в этом руководстве, но эти шаги можно использовать в качестве предварительного условия для работы с ORM, например SQLAlchemy или Peewee.

Инструменты, которые нам нужны

Наше пошаговое руководство должно работать с Python 2 или 3 хотя все шаги были протестированы специально с Python 3.5. Помимо интерпретатор Python, вот другие компоненты, которые мы будем использовать:

Если вы не знаете, как установить pip и virtualenv, просмотрите первые несколько шагов как настроить Python 3, Bottle и Green Unicorn на Ubuntu 16.04 LTS руководство.

Установить PostgreSQL

Мы установим PostgreSQL через менеджер пакетов apt . Есть несколько пакеты, которые нам нужны, поскольку мы хотим запускать PostgreSQL и использовать psycopg2 драйвер с нашими программами Python. PostgreSQL также будет установлен как системный сервис, чтобы мы могли запускать, останавливать и перезагружать его конфигурацию, когда необходимо с помощью команды service . Откройте терминал и запустите:

sudo apt-get install postgresql libpq-dev postgresql-client postgresql-client-common

Введите свой пароль sudo , когда будет предложено, и введите “да”, когда apt спросит. если вы хотите установить новые пакеты.

Через несколько секунд apt завершит загрузку, установку и обработка.

Теперь у нас установлен PostgreSQL и запущена служба PostgreSQL. на заднем фоне. Однако нам нужно создать пользователя и экземпляр базы данных. чтобы действительно начать его использовать. Используйте команду sudo , чтобы переключиться на новый аккаунт “postgres”.

sudo -i -u postgres

В учетной записи “postgres” создайте пользователя из командной строки с createuser команда. PostgreSQL подскажет вам несколько вопросов. Ответьте «n» суперпользователю и «y» на остальные вопросы.

createuser matt -P --interactive

Замечательно, теперь у нас есть пользователь PostgreSQL, который соответствует нашему логину в Ubuntu Счет. Выйдите из учетной записи postgres, нажав клавишу «Ctrl» вместе с “d” в оболочку. Мы снова в нашей собственной учетной записи.

Создайте новую базу данных, которую мы можем использовать для тестирования. Вы можете назвать это “testpython” или все, что вы хотите для своего приложения.

createdb testpython

Теперь мы можем взаимодействовать с testpython через инструмент командной строки PostgreSQL.

Взаимодействие с PostgreSQL

Клиент командной строки psql полезен для прямого подключения к нашему Сервер PostgreSQL без кода Python. Попробуйте psql с помощью этого команда в командной строке:

psql testpython

Клиент PostgreSQL подключится к серверу localhost. Клиент теперь готов к вводу:

Попробуйте командную строку PostgreSQL, попробуйте такие команды, как \ dt и \ dd . Мы также можем запускать SQL-запросы, такие как «SELECT * from testpython», хотя это еще не вернет нам никаких данных, потому что мы не вставили любой в базу данных. Полный список команд PostgreSQL можно найдено в документация по psql .

Установка psycopg2

Теперь, когда PostgreSQL установлен и у нас есть учетная запись без суперпользователя, мы можно установить пакет psycopg2 . Давайте выяснить, где находится исполняемый файл python3 , создать виртуальный с помощью python3 активируйте virtualenv, а затем установите пакет psycopg2 с помощью pip . Найдите исполняемый файл python3 с помощью команды which .

which python3

Мы увидим результат, как на этом скриншоте.

Создайте новый virtualenv либо в своем домашнем каталоге, либо где угодно храните свои виртуальные файлы Python. Укажите полный путь к вашему python3 установка.

# specify the system python3 installation
virtualenv --python=/usr/bin/python3 venvs/postgrestest

Активируйте virtualenv.

source ~/venvs/postgrestest/bin/activate

Затем мы можем установить пакет Python psycopg2 из PyPI с помощью команды pip .

pip install psycopg2

Отлично, у нас в virtualenv установлен драйвер PostgreSQL! Мы можем Теперь проверьте установку, написав несколько строк кода Python.

Использование PostgreSQL из Python

Запустите Python REPL с помощью команды python или python3 . Вы также можете напишите следующий код в файле Python, например testpostgres.py, затем выполнить его с помощью python testpostgres.py . Обязательно замените “пользователь” и значения “пароля” с вашими собственными.

import psycopg2

try:
    connect_str = "dbname='testpython' user='matt' host='localhost' " + \
                  "password='myOwnPassword'"
    # use our connection values to establish a connection
    conn = psycopg2.connect(connect_str)
    # create a psycopg2 cursor that can execute queries
    cursor = conn.cursor()
    # create a new table with a single column called "name"
    cursor.execute("""CREATE TABLE tutorials (name char(40));""")
    # run a SELECT statement - no data in there, but we can try it
    cursor.execute("""SELECT * from tutorials""")
    conn.commit() # <--- makes sure the change is shown in the database
    rows = cursor.fetchall()
    print(rows)
    cursor.close()
    conn.close()
except Exception as e:
    print("Uh oh, can't connect. Invalid dbname, user or password?")
    print(e)

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

Этого хватит, чтобы начать писать более сложный SQL запросы с использованием psycopg2 и PostgreSQL. Обязательно ознакомьтесь с PostgreSQL, реляционные базы данных и объектно-реляционные преобразователи (ORM) страницы для дополнительных руководств.

Вопросов? Твитнуть @fullstackpython или опубликуйте сообщение на Страница Full Stack Python на Facebook .

Что-то не так в этом посте? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос.