YDB Dialect for SQLAlchemy
Project description
YDB Dialect for SQLAlchemy
This repository contains YQL dialect for SqlAlchemy 2.0.
Documentation: https://ydb-platform.github.io/ydb-sqlalchemy
Note: Dialect also works with SqlAlchemy 1.4, but it is not fully tested.
Installation
Via PyPI
To install ydb-sqlalchemy from PyPI:
$ pip install ydb-sqlalchemy
Installation from source code
To work with current ydb-sqlalchemy version clone this repo and run from source root:
$ pip install -U .
Getting started
Connect to local YDB using SqlAlchemy:
import sqlalchemy as sa
engine = sa.create_engine("yql+ydb://localhost:2136/local")
with engine.connect() as conn:
rs = conn.execute(sa.text("SELECT 1 AS value"))
print(rs.fetchone())
Authentication
To specify credentials, you should pass credentials object to connect_args argument of create_engine method.
Static Credentials
To use static credentials you should specify username and password as follows:
engine = sa.create_engine(
"yql+ydb://localhost:2136/local",
connect_args = {
"credentials": {
"username": "...",
"password": "..."
}
}
)
Token Credentials
To use access token credentials you should specify token as follows:
engine = sa.create_engine(
"yql+ydb://localhost:2136/local",
connect_args = {
"credentials": {
"token": "..."
}
}
)
Service Account Credentials
To use service account credentials you should specify service_account_json as follows:
engine = sa.create_engine(
"yql+ydb://localhost:2136/local",
connect_args = {
"credentials": {
"service_account_json": {
"id": "...",
"service_account_id": "...",
"created_at": "...",
"key_algorithm": "...",
"public_key": "...",
"private_key": "..."
}
}
}
)
Credentials from YDB SDK
To use any credentials that comes with ydb package, just pass credentials object as follows:
import ydb.iam
engine = sa.create_engine(
"yql+ydb://localhost:2136/local",
connect_args = {
"credentials": ydb.iam.MetadataUrlCredentials()
}
)
Migrations
To setup alembic to work with YDB please check this example.
Development
Run Tests:
Run the command from the root directory of the repository to start YDB in a local docker container.
$ docker-compose up
To run all tests execute the command from the root directory of the repository:
$ tox -e test-all
Run specific test:
$ tox -e test -- test/test_core.py
Check code style:
$ tox -e style
Reformat code:
$ tox -e isort
$ tox -e black-format
Run example (needs running local YDB):
$ python -m pip install virtualenv
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python examples/example.py
Additional Notes
Pandas
It is possible to use YDB SA engine with pandas fuctions to_sql() and read_sql. However, there are some limitations:
-
to_sqlmethod can not be used with column tables, since it is impossible to specifyNOT NULLcolumns with currentto_sqlarguments. YDB requires column tables to haveNOT NULLattribute onPKcolumns. -
to_sqlis not fully optimized to load huge datasets. It is recommended to usemethod="multi"and avoid setting a very largechunksize. -
read_sqlis not fully optimized to load huge datasets and could lead to significant memory consumptions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ydb_sqlalchemy-0.1.18.tar.gz.
File metadata
- Download URL: ydb_sqlalchemy-0.1.18.tar.gz
- Upload date:
- Size: 38.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ce03ee4b77243a2882d6c2eb9fe6ff384d53949c6786833f2aea9414e81570f
|
|
| MD5 |
f7d9c0053793b1adac122198546f4f3b
|
|
| BLAKE2b-256 |
622b11085aee3830cb39523e40f3e7d1c7bddac158a417a69cdb14a46fc75762
|
File details
Details for the file ydb_sqlalchemy-0.1.18-py2.py3-none-any.whl.
File metadata
- Download URL: ydb_sqlalchemy-0.1.18-py2.py3-none-any.whl
- Upload date:
- Size: 42.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
781cb80c61aaf905673c7bab3c757edb6cebaba6b5be71978bf921921c6e6abd
|
|
| MD5 |
b3c0b7185c9c333ae46ed1b586fc0a9b
|
|
| BLAKE2b-256 |
0ef3ed0f159dce411e46434b3c8d8c79c8030a24f90a54a311a255b5e35b2790
|