clickhouse-sqlalchemy
v0.3.2Simple ClickHouse SQLAlchemy Dialect
44 KB Python 3.7+ MIT License
$ uv add clickhouse-sqlalchemyClickHouse SQLAlchemy
ClickHouse dialect for SQLAlchemy to ClickHouse database.
Documentation
Documentation is available at https://clickhouse-sqlalchemy.readthedocs.io.
Usage
Supported interfaces:
- native [recommended] (TCP) via
clickhouse-driver <https://github.com/mymarilyn/clickhouse-driver> - async native (TCP) via
asynch <https://github.com/long2ice/asynch> - http via requests
Define table
from sqlalchemy import create_engine, Column, MetaData
from clickhouse_sqlalchemy import (
Table, make_session, get_declarative_base, types, engines
)
uri = 'clickhouse+native://localhost/default'
engine = create_engine(uri)
session = make_session(engine)
metadata = MetaData(bind=engine)
Base = get_declarative_base(metadata=metadata)
class Rate(Base):
day = Column(types.Date, primary_key=True)
value = Column(types.Int32)
__table_args__ = (
engines.Memory(),
)
Rate.__table__.create()
Insert some data
from datetime import date, timedelta
from sqlalchemy import func
today = date.today()
rates = [
{'day': today - timedelta(i), 'value': 200 - i}
for i in range(100)
]
And query inserted data
session.execute(Rate.__table__.insert(), rates)
session.query(func.count(Rate.day)) \
.filter(Rate.day > today - timedelta(20)) \
.scalar()
License
ClickHouse SQLAlchemy is distributed under the MIT license.
Details
- Version
- 0.3.2
- License
- MIT License
- Python
- <4,>=3.7
- Maintainer
- Konstantin Lebedev
Maintainers
- Konstantin Lebedev · [email protected]