Fork me on GitHub

使用sqlalchemy为clickhouse创建数据表

安装需要的包

1
$ pip install clickhouse-sqlalchemy

使用demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine, Column, MetaData, literal
from clickhouse_sqlalchemy import Table, make_session, get_declarative_base, types, engines
uri = "clickhouse://default:Qbb4RJa4@localhost/dayday"
engine = create_engine(uri)
session = make_session(engine)
metadata = MetaData(bind=engine)
Base = get_declarative_base(metadata=metadata)
day = Table('date',metadata,
Column('day',types.Date,primary_key=True),
Column('value',types.Int32,server_default=literal(1)),
engines.Memory()
)
if __name__ == "__main__":
day.create()

我设置了密码,自己没有设置,@//前面几个不用写

使用一键运行创建大量数据库表

# -*- coding: utf-8 -*-

from sqlalchemy import create_engine, Column, MetaData, literal
from clickhouse_sqlalchemy import make_session, get_declarative_base, types, engines
from datetime import datetime

uri = "clickhouse://default:Qbb4RJa4@localhost/default"

engine = create_engine(uri)
session = make_session(engine)
metadata = MetaData(bind=engine)

Base = get_declarative_base(metadata=metadata)


class User(Base):
    __tablename__ = "user"
    id = Column(types.Int8, primary_key=True)
    name = Column(types.String)
    pwd = Column(types.String)
    email = Column(types.String)
    phone = Column(types.String)
    info = Column(types.String)
    face = Column(types.String)
    addtime = Column(types.Date)
    uuid = Column(types.String)

    __table_args__ = (
        engines.Memory(),
    )

    def __repr__(self):
        return "<User %r>" % self.name


if __name__ == "__main__":
   Base.metadata.create_all(engine)

多个数据表可以写多个class

访问数据库就可以看到新创建的数据库

遇见的问题是关联表之间的问题,关联表的时候,显示数据表引擎有问题,还不知怎么解决,探索中… …

禹都一只猫,热爱IT,支持原创