傲渊山岳 发表于 2024-7-17 01:45:34

python 连接clickhouse数据库及简朴操纵

前言

最近研究了下python爬虫,想爬取一些数据存储到clickhouse里,举行分析。由于是新手,搜了好多教程,也踩了好几天的坑,记录一下,防止以后再走弯路。
连接代码

#引入库
from clickhouse_driver import Client
# 建立连接,注意这里的参数赋值方式
client = Client(host='xx.xx.xx.xx', port=8900, user='default', password='xxxxx@xxxxx', database='default')
result = client.execute('show tables')
print(type(result), result)
for row in result:
    print(row)
   
client.disconnect()
经验总结

遇到的问题重要集中在建立连接语句上,client = Client(host=‘xx.xx.xx.xx’, port=8900, user=‘default’, password=‘xxxxx@xxxxx’, database=‘default’)

[*] 参数赋值方式。利用 host= 格式赋值
[*] 端口用错问题。clickhouse 数据库启动时会建立三个端口监听,http端口是给第三方工具连接利用的,tcp端口才是给python 代码连接利用的。要检察对应clickhouse设置的端口,参见其他文章 clickhouse安装及简朴利用
[*] 端口确认问题。在设置前,先利用telnet确认 端口服务已开启,若端口设置是对的,但还不能通,要思量下防护墙问题。
[*] 按照以上要求,都是可以连接乐成的。有的教程说还是连接不乐成,八成还是端口问题。
执行查询

#引入库
from clickhouse_driver import Client
# 建立连接,注意这里的参数赋值方式
client = Client(host='xx.xx.xx.xx', port=8900, user='default', password='xxxxx@xxxxx', database='default')
result = client.execute("select * from lotto limit 2")
for row in result:
    print(row)
   
client.disconnect()
若是查询语句带了Date32范例的字段,就会报错 KeyError: -25567,缘故原由是表里记录的创建时间字段的值都是‘1900-01-01’,clickhouse系统默认时间,python无法处理,改成其他时间即可办理问题。
执行插入

#引入库
from clickhouse_driver import Client
# 建立连接,注意这里的参数赋值方式
client = Client(host='xx.xx.xx.xx', port=8900, user='default', password='xxxxx@xxxxx', database='default')
insert_sql = 'INSERT INTO `default`.lotto(id, `number`,award_date, award_result, f1, f2, f3, f4, f5, b1, b2)VALUES'
data = [(uuid.uuid4().__str__(), '123', datetime.datetime.strptime('2024-01-17', '%Y-%m-%d').date(), '012325', '01', '1', '2', '3', '4', '5', '6', datetime.datetime.strptime('2024-01-17', '%Y-%m-%d').date())]
result = client.execute(insert_sql, data)
for row in result:
    print(row)
   
client.disconnect()
执行插入时,data的拼接是有规则限定的;

[*]data 要是一个列表范例(即使插入一行),内里是一行行要插入的记录,记录要利用元组范例封装
[*]日期不能直接写 ‘2024-01-17’字符范例,不然会报错,必要转成datetime.date范例
[*]UUID生成的范例不是字符范例,必要转成对应的字符范例

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: python 连接clickhouse数据库及简朴操纵