import sqlalchemy as db
from sqlalchemy import MetaData
from clickhouse_connect.cc_sqlalchemy.ddl.custom import CreateDatabase, DropDatabase
from clickhouse_connect.cc_sqlalchemy.ddl.tableengine import MergeTree
from clickhouse_connect.cc_sqlalchemy.datatypes.sqltypes import UInt32, String, DateTime64
with engine.begin() as conn:
# 数据库
conn.execute(CreateDatabase("example_db", exists_ok=True))
# 表
metadata = MetaData(schema="example_db")
table = db.Table(
"events",
metadata,
db.Column("id", UInt32, primary_key=True),
db.Column("user", String),
db.Column("created_at", DateTime64(3)),
MergeTree(order_by="id"),
)
table.create(conn)
# 反射
reflected = db.Table("events", metadata, autoload_with=engine)
assert reflected.engine is not None