Skip to main content

Classic DB tools

Project description

Classic DB Tools

Идея библиотеки заключается в попытке работать с SQL-запросами как с шаблонами Jinja. Вдохновлено embrace и jinjasql, оттуда же бралась часть кода.

Установка:

pip install classic-db-tools

Quickstart:

from classic.db_tools import Engine, ConnectionPool
import psycopg

pool = ConnectionPool(psycopg.connect)
engine = Engine('path/to/sql/templates/dir', pool)

# При входе движок займет соединение в пуле,
# на выходе, по дефолту, закоммитит
with engine:
    # Применим схему:
    engine.from_file('tasks/ddl.sql').execute()
    
    # Сохранение данных
    engine.from_file('tasks/save.sql').executemany([
        {'title': 'Some Task', 'body': 'Do something'},
        {'title': 'Another Task', 'body': 'Do anything'},
    ])
    
    # Получение данных
    task = engine.from_file('tasks/get_by_id.sql').one(id=1)
    # (1, 'Some Task', 'Do something')

В директории sql рядом с .py файлом надо разместить 3 файла (можно найти в директории test/example):

sql/tasks/ddl.sql:

CREATE TABLE tasks (
    id serial PRIMARY KEY,
    title text,
    body text
);

sql/tasks/get_by_id.sql:

SELECT id, title, body FROM tasks WHERE id = %(id)s;

sql/tasks/save.sql:

INSERT INTO tasks (title, body) VALUES (%(title)s, %(body)s);

Возможности

Управление коннектом и транзакциями

Выполнение из файла и напрямую

Статические запросы

Динамические запросы

Выдача значений

Маппинг

Маппинг на классы

Маппинг на словари

Кастомные идентификаторы

Композитные ключи

Отложенные операции

ScopedConnection

Transaction

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

classic_db_tools-0.0.2.tar.gz (21.1 kB view details)

Uploaded Source

File details

Details for the file classic_db_tools-0.0.2.tar.gz.

File metadata

  • Download URL: classic_db_tools-0.0.2.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.13

File hashes

Hashes for classic_db_tools-0.0.2.tar.gz
Algorithm Hash digest
SHA256 0cbe0bc38bafd18ab0418d3f864c7a2b7c79d180a7c90de3fb4bf2c446d1e0c1
MD5 41c5ee3db4864d4ffbca7ef3cbce8af9
BLAKE2b-256 2f98118b59a39da0cbbc13ce59f444ed3a19ea5aadb7c221d312882ff45c1c40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page