Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для PostgreSQL — гибкий сервер
Область применения: гибкий сервер Базы данных Azure для PostgreSQL
В этом кратком руководстве вы подключаетесь к База данных Azure для PostgreSQL гибкому экземпляру сервера с помощью Python. Также вы узнаете, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных на платформах Windows, Mac и Ubuntu Linux.
В этой статье предполагается, что вы знакомы с разработкой с помощью Python, но вы не знакомы с База данных Azure для PostgreSQL гибким сервером.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Гибкий экземпляр сервера База данных Azure для PostgreSQL. Сведения о создании гибкого экземпляра сервера База данных Azure для PostgreSQL см. в статье "Создание База данных Azure для PostgreSQL — гибкий экземпляр сервера с помощью портал Azure".
- Python версии 2.7 или 3.6 и выше.
- Установщик пакета pip последней версии.
Подготовка клиентской рабочей станции
- Если вы создали гибкий экземпляр сервера База данных Azure для PostgreSQL с частным доступом (интеграция с виртуальной сетью), необходимо подключиться к серверу из ресурса в той же виртуальной сети, что и сервер. Вы можете создать виртуальную машину и добавить ее в виртуальную сеть, созданную с помощью База данных Azure для PostgreSQL гибкого экземпляра сервера. Дополнительные сведения см. в статье Создание виртуальной сети для Базы данных Azure для PostgreSQL (Гибкий сервер) и управление ею с помощью Azure CLI.
- Если вы создали гибкий экземпляр сервера База данных Azure для PostgreSQL с общедоступным доступом (разрешенными IP-адресами), вы можете добавить локальный IP-адрес в список правил брандмауэра на сервере. Дополнительные сведения см. в статье Создание правил брандмауэра для Базы данных Azure для PostgreSQL (Гибкий сервер) и управление ими с помощью Azure CLI.
Установка библиотек Python для PostgreSQL
Модуль psycopg2 позволяет подключаться к базе данных PostgreSQL и выполнять запросы к ней. Он доступен в виде пакета Wheel для Linux, macOS или Windows. Установите двоичную версию модуля, включая все зависимости.
Чтобы установить psycopg2
, откройте окно терминала или командную строку и выполните команду pip install psycopg2
.
Получение сведений о подключении к базе данных
Подключение для База данных Azure для PostgreSQL гибкого экземпляра сервера требуется полное имя сервера и учетные данные для входа. Эти сведения можно получить на портале Azure.
В портал Azure найдите и выберите имя гибкого сервера База данных Azure для PostgreSQL.
На странице Обзор сервера скопируйте полное имя сервера и имя администратора. Полное имя сервера всегда имеет формат <имя-сервера>.postgres.database.azure.com.
Кроме того, потребуется пароль администратора. Если вы не помните этот пароль, вы можете сбросить его на странице обзора.
Выполнение примеров кода Python
Для каждого примера кода в этой статье сделайте следующее:
Создайте файл в текстовом редакторе.
Добавьте пример кода в файл. В коде замените:
<server-name>
и<admin-username>
значениями, скопированными на портале Azure.<admin-password>
паролем сервера.<database-name>
с именем гибкой базы данных сервера База данных Azure для PostgreSQL. При создании сервера автоматически создается база данных по умолчанию с именем postgres. Можно переименовать эту базу данных или создать новую базу данных с помощью команд SQL.
Сохраните файл в папке проекта с расширением PY, например postgres-insert.py. При сохранении файла в ОС Windows обязательно выберите кодировку UTF-8.
Чтобы запустить этот файл, перейдите в папку проекта в интерфейсе командной строки и введите
python
, а затем — имя файла, напримерpython postgres-insert.py
.
Создание таблицы и вставка данных
Следующий пример кода подключается к гибкой базе данных сервера База данных Azure для PostgreSQL с помощью функции psycopg2.connect и загружает данные с помощью инструкции SQL INSERT. Функция cursor.execute выполняет SQL-запрос к базе данных.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
При успешном выполнении кода возвращаются следующие данные:
Чтение данных
Следующий пример кода подключается к гибкой базе данных сервера База данных Azure для PostgreSQL и использует cursor.execute с инструкцией SQL SELECT для чтения данных. Эта функция принимает запрос и возвращает результирующий набор для итерации с помощью cursor.fetchall()
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
Обновление данных
Следующий пример кода подключается к гибкой базе данных сервера База данных Azure для PostgreSQL и использует cursor.execute с инструкцией SQL UPDATE для обновления данных.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
Удаление данных
Следующий пример кода подключается к гибкой базе данных сервера База данных Azure для PostgreSQL и использует cursor.execute с инструкцией SQL DELETE для удаления элемента инвентаризации, который вы ранее вставили.
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()