PostgreSQL – мощный открытый исходный код реляционная база данных, часто используемая для создания, чтения, обновлять и удалять данные веб-приложения Python. Psycopg2 – это база данных PostgreSQL. драйвер, который служит клиентом Python для доступа к серверу PostgreSQL. В этом посте объясняется, как установить PostgreSQL в Ubuntu 16.04. и выполнить несколько базовых SQL-запросов в программе Python.
Мы не будем покрывать объектно-реляционные преобразователи (ORM) в этом руководстве, но эти шаги можно использовать в качестве предварительного условия для работы с ORM, например SQLAlchemy или Peewee.
Инструменты, которые нам нужны
Наше пошаговое руководство должно работать с Python 2 или 3 хотя все шаги были протестированы специально с Python 3.5. Помимо интерпретатор Python, вот другие компоненты, которые мы будем использовать:
- Ubuntu 16.04.2 (эти
- шаги также должны работать нормально с другими версиями Ubuntu)
- pip и
- virtualenv для обработки
- psycopg2
- зависимость приложения
- PostgreSQL
Если вы не знаете, как установить 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 и отправьте запрос на перенос.