Краткое руководство. Использование Python для подключения и запроса данных в База данных Azure для PostgreSQL — отдельный сервер

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных Azure для PostgreSQL — гибкий сервер см. в статье "Что происходит с одним сервером База данных Azure для PostgreSQL?".

Из этого краткого руководства вы узнаете, как подключиться к базе данных в службе "База данных Azure для PostgreSQL — отдельный сервер" и выполнить инструкции SQL для создания запросов с помощью Python в macOS, Ubuntu Linux или Windows.

Совет

Если вы хотите создать приложение Django с помощью PostgreSQL, изучите учебник Развертывание веб-приложения Django с помощью PostgreSQL.

Необходимые компоненты

Для целей этого краткого руководства понадобится:

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

  • Создать отдельный сервер Базы данных Azure для PostgreSQL на портале Azure
    или с помощью Azure CLI, если он еще не создан.

  • Выполнить ОДНО из действий (в зависимости от того, пользуетесь вы общим или частным доступом), чтобы настроить возможность подключения.

    Действие Метод подключения Практическое руководство
    Настройка правил брандмауэра Общедоступный Портал
    CLI
    Настройка конечной точки службы Общедоступный Портал
    CLI
    Настройка приватного канала Private Портал
    CLI
  • Python версии 2.7 или 3.6 и выше.

  • Установщик пакета pip последней версии.

  • Установить psycopg2, используя pip install psycopg2-binary в терминале или окне командной строки. Дополнительные сведения см. в статье об установкеpsycopg2.

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

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

  1. На портале Azure выполните поиск по имени сервера и выберите сервер службы "База данных Azure для PostgreSQL".

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

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

    Имя сервера службы

Внимание

Измените следующие значения:

  • <server-name> и <admin-username> значениями, скопированными на портале Azure.
  • <admin-password> паролем сервера.
  • <database-name> база данных по умолчанию с именем postgres была автоматически создана при создании сервера. Можно переименовать эту базу данных или создать новую базу данных с помощью команд SQL.

Шаг 1. Подключение и вставка данных

Следующий пример кода подключается к Базе данных 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()

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

Вывод командной строки

Шаг 2. Чтение данных

Следующий пример кода подключается к базе данных службы "База данных Azure для PostgreSQL" и использует

  • cursor.execute с инструкцией SQL SELECT для чтения данных.
  • Функция сursor.fetchall() принимает запрос и возвращает результирующий набор для итерации с помощью

# 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])))

Шаг 3. Обновление данных

В следующем примере кода для обновления данных используется cursor.execute с инструкцией SQL UPDATE.


# 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")

Шаг 5. Удаление данных

В следующем примере кода cursor.execute выполняется с инструкцией SQL DELETE, чтобы удалить ранее вставленный элемент inventory.


# Delete data row from table

cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")

Очистка ресурсов

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

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Следующие шаги