Picopyn¶
В данном разделе приведено описание Python-драйвера для работы с СУБД Picodata.
Общие сведения¶
Драйвер Picopyn представляет собой пакет для Python, реализующий подключение и работу с СУБД Picodata из Python-приложений. Picopyn основан на пакете asyncpg.
Поддерживаемые функции¶
Драйвер Picopyn обеспечивает следующую функциональность:
- поддержка пула подключений, возможность настраивать размер пула
- опциональное автоматическое обнаружение узлов кластера Picodata
- возможность выбора стратегии балансировки подключений
- полностью асинхронный API
Подключение¶
Установите драйвер из исходного кода:
git clone https://git.picodata.io/core/drivers/picopyn.git
cd picopyn
make install
Пример использования¶
import asyncio
from picopyn import Client
async def main():
# create and connect client to the Picodata cluster
client = Client(dsn="postgresql://admin:pass@localhost:5432")
await client.connect()
# execute DDL operations
await client.execute('''
CREATE TABLE "warehouse" (id INTEGER NOT NULL, item TEXT NOT NULL, PRIMARY KEY (id)) USING memtx DISTRIBUTED BY (id) OPTION (TIMEOUT = 3.0);
''')
# execute DML operations
await client.execute('INSERT INTO \"warehouse\" VALUES ($1::int, $2::varchar)', 1, "test")
rows = await client.fetch('SELECT * FROM \"warehouse\"')
print(rows)
await client.close()
asyncio.run(main())
Изменение параметров¶
Параметры клиента¶
Используйте следующие параметры для класса Client:
dsn(str) — имя источника данных (data source name) в форматеpostgresql://user:pass@host:portbalance_strategy(callable, optional) — стратегия балансировки подключений. По умолчанию используетсяround-robinpool_size— размер используемого пула подключенийconnect_kwargs— дополнительные параметры подключения в форматеключ = значение
Пример использования параметров:
>>> client = Client(
... dsn="postgresql://admin:pass@localhost:5432",
... balance_strategy=random_strategy,
... pool_size=4
... )
Задайте стратегию балансировки подключений в блоке следующего вида:
def random_strategy(connections):
... import random
... return random.choice(connections)
Параметры пула подключений¶
Используйте следующие параметры для класса Pool:
dsn(str) — имя источника данных (data source name) в форматеpostgresql://user:pass@host:portbalance_strategy(callable, optional) — стратегия балансировки нагрузки. По умолчанию используетсяround-robinmax_size(int) — максимальное число подключений в пуле. Значение не может быть меньше 1enable_discovery(bool) — признак автоматического обнаружения узлов кластера Picodata. При значенииTrueдрайвер будет искать доступные узлы кластера, приFalse— использовать только указанный вdsnузелconnect_kwargs— дополнительные параметры подключения в форматеключ = значение
Пример использования параметров:
>>> pool = Pool(
... dsn="postgresql://admin:pass@localhost:5432",
... balance_strategy=random_strategy,
... max_size=10,
... enable_discovery=True
... )