clickhouse_orm使用之操作数据库

本文用代码示范了用clickhouse_orm对clickhouse数据库的几种操作,包括连接clickhouse数据库,建表,删表,查询,更新,插入,删除。

from infi.clickhouse_orm.database import Database
from infi.clickhouse_orm.engines import MergeTree
from infi.clickhouse_orm.fields import UInt64Field, StringField
from infi.clickhouse_orm.models import Model
from config import CLICKHOUSE_INFO

CLICKHOUSE_URL = 'http://localhost:6666/?mutations_sync=1'
CLICKHOUSE_HOST = '127.0.0.1'
CLICKHOUSE_DB = 'test'
db = Database(**CLICKHOUSE_INFO)

class Test(Model):
    @classmethod
    def table_name(cls):
        return 'test6'
    id = UInt64Field()
    name=StringField()
    def __init__(self, id, name):
        self.id = id
        self.name=name
    engine = MergeTree(partition_key=('id',), order_by=('id',))

    @classmethod
    def add_record(cls,id,name):
        record = cls(id,name)
        db.insert([record,])
        print('插入成功')

CLICKHOUSE_INFO = {"db_name": CLICKHOUSE_DB, "db_url": CLICKHOUSE_URL}
db = Database(**CLICKHOUSE_INFO)

#db.drop_table(Test) #删除表
db.create_table(Test) #建表

a={"id":'1', "name":'zhang'}
t=Test(**a)  #实例化表数据

# obj = Test.objects_in(db).aggregate(max_id='max(id)')  # 找出表中最大id实现自增id
# t=Test(id=obj[0].max_id+1,name='huang')  #实例化表数据

db.insert([t,])  #插入
sel=Test.objects_in(db).filter(id=1)#查询
for p in sel:
    print(p.name)  #访问查询出来的数据
#sel.update(name='zhang')#更新
#sel.delete()#删除

下面介绍直接在python后台代码执行SQL语句,对数据库clickhouse数据库进行操作。

from clickhouse_driver import Client
from infi.clickhouse_orm.database import Database
from config import CLICKHOUSE_INFO

CLICKHOUSE_URL = 'http://localhost:8123/?mutations_sync=1'
CLICKHOUSE_HOST = '127.0.0.1'
CLICKHOUSE_DB = 'test'
db = Database(**CLICKHOUSE_INFO)

client = Client(CLICKHOUSE_HOST)
client.execute('use ' + CLICKHOUSE_DB)
#client.execute('CREATE TABLE test5( id UInt64,name String) ENGINE = MergeTree() order by id partition by id;')

#a=client.execute("insert into test5 values (3,'liu')")

#a=client.execute("select * from test5") #返回的是一个查询结果列表:[(2, 'liu'), (3, 'liu')]
#print(a[0][0])#输出查询到的第一个记录的第一个字段

#a=client.execute("insert into test5 values (1,'wang');") #插入数据成功,返回值是一个空列表

#a=client.execute("alter table test5 update name='huang' where id=1;")#更新数据成功,返回值是一个空列表

a=client.execute("alter table test5 delete where id=1")#删除数据成功,返回值是一个空列表
print(a)
client.disconnect()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值