Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы подключитесь к экземпляру Azure HorizonDB с помощью Python. Затем вы используете инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных из macOS, Ubuntu Linux и платформ Windows.
Действия, описанные в этой статье, включают проверку подлинности PostgreSQL.
Проверка подлинности PostgreSQL использует учетные записи, хранящиеся в PostgreSQL, и вам нужно самостоятельно управлять сменой паролей.
В этой статье предполагается, что вы знакомы с разработкой с помощью Python, но вы не знакомы с Azure HorizonDB.
Необходимые условия
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно.
- Кластер Azure HorizonDB. Чтобы создать кластер Azure HorizonDB, см. Создание кластера Azure HorizonDB.
- Python 3.8+.
- Установщик пакета pip последней версии.
Добавление правил брандмауэра для рабочей станции клиента
- Если вы создали кластер Azure HorizonDB с Public access (разрешенные IP-адреса) можно добавить локальный IP-адрес в список правил брандмауэра в кластере. См. раздел Сеть в Azure HorizonDB (предварительная версия).
Подготовка среды разработки
Перейдите в папку, в которой необходимо запустить код и создать и активировать виртуальную среду. Виртуальная среда — это автономный каталог для определенной версии Python и других пакетов, необходимых для этого приложения.
Выполните следующие команды, чтобы создать и активировать виртуальную среду:
py -3 -m venv .venv
.venv\Scripts\activate
Установка библиотек Python
Установите библиотеки Python, необходимые для выполнения примеров кода.
Установите модуль psycopg, который позволяет подключаться к базе данных PostgreSQL и запрашивать ее.
# Recommended: install the binary wheel that bundles a compatible libpq wrapper (Windows/macOS)
python -m pip install "psycopg[binary]"
# Linux alternative (if you prefer building against system libpq):
sudo apt-get update
sudo apt-get install -y libpq-dev build-essential python3-dev
python -m pip install psycopg
Добавление кода проверки подлинности
В этом разделе вы добавите код проверки подлинности в рабочий каталог и выполните все дополнительные действия, необходимые для проверки подлинности и авторизации в экземпляре кластера.
Перед добавлением кода проверки подлинности убедитесь, что необходимые пакеты для каждого примера установлены.
Обязательные пакеты (примеры в этой статье):
- Пример пароля: (рекомендуется:
psycopgpython -m pip install "psycopg[binary]")
При необходимости создайте requirements.txt с этими записями и установите с помощью python -m pip install -r requirements.txt для воспроизводимых установок.
Скопируйте следующий код в редактор и сохраните его в файле с именем get_conn.py.
import urllib.parse import os def get_connection_uri(): # Read URI parameters from the environment dbhost = os.environ['DBHOST'] dbname = os.environ['DBNAME'] dbuser = urllib.parse.quote(os.environ['DBUSER']) password = os.environ['DBPASSWORD'] sslmode = os.environ['SSLMODE'] db_uri = f"host={dbhost} dbname={dbname} user={dbuser} password={password} sslmode={sslmode}" # Construct connection URI return db_uriПолучение сведений о подключении к базе данных.
Использование портала Azure:
В меню слева на портале Azure выберите Все ресурсы и найдите созданный кластер.
Выберите имя кластера.
В меню ресурсов выберите Обзор. Наведите указатель мыши на значение, отображаемое как первичная конечная точка (чтение и запись) и нажмите кнопку "Копировать в буфер обмена ".
Если вы забыли пароль для входа администратора, его можно сбросить с помощью кнопки "Сброс пароля ".
Задайте переменные среды для элементов URI подключения:
set DBHOST=<cluster-name> set DBNAME=<database-name> set DBUSER=<username> set DBPASSWORD=<password> set SSLMODE=require
Выполнение примеров кода Python
Для каждого примера кода в этой статье сделайте следующее:
Создайте файл в текстовом редакторе.
Добавьте пример кода в файл.
Сохраните файл в папке проекта с расширением PY, например postgres-insert.py. При сохранении файла в ОС Windows обязательно выберите кодировку UTF-8.
В вашей папке проекта введите
python, затем имя файла, напримерpython postgres-insert.py.
Создание таблицы и вставка данных
Следующий пример кода подключается к кластеру HorizonDB Azure с помощью функции psycopg.connect и загружает данные с помощью инструкции SQL INSERT. Функция cursor.execute выполняет SQL-запрос к базе данных.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.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()
При успешном выполнении кода возвращаются следующие данные:
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
Чтение данных
В следующем примере кода показано, как подключиться к кластеру Azure HorizonDB и использовать метод cursor.execute с инструкцией SQL SELECT для чтения данных. Эта функция принимает запрос и возвращает набор результатов, который можно перебрать с помощью cursor.fetchall().
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.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()
При успешном выполнении кода возвращаются следующие данные:
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
Обновление данных
Следующий пример кода подключается к кластеру HorizonDB Azure и использует cursor.execute с инструкцией SQL UPDATE для обновления данных.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.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 HorizonDB и использует cursor.execute с оператором SQL DELETE, чтобы удалить элемент инвентаря, который вы ранее вставили.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.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()