IT评测·应用市场-qidao123.com

标题: python 连接clickhouse数据库及简朴操纵 [打印本页]

作者: 傲渊山岳    时间: 2024-7-17 01:45
标题: python 连接clickhouse数据库及简朴操纵
前言

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

  1. #引入库
  2. from clickhouse_driver import Client
  3. # 建立连接,注意这里的参数赋值方式
  4. client = Client(host='xx.xx.xx.xx', port=8900, user='default', password='xxxxx@xxxxx', database='default')
  5. result = client.execute('show tables')
  6. print(type(result), result)
  7. for row in result:
  8.     print(row)
  9.    
  10. client.disconnect()
复制代码
经验总结

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

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

  1. #引入库
  2. from clickhouse_driver import Client
  3. # 建立连接,注意这里的参数赋值方式
  4. client = Client(host='xx.xx.xx.xx', port=8900, user='default', password='xxxxx@xxxxx', database='default')
  5. insert_sql = 'INSERT INTO `default`.lotto(id, `number`,award_date, award_result, f1, f2, f3, f4, f5, b1, b2)VALUES'
  6. 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())]
  7. result = client.execute(insert_sql, data)
  8. for row in result:
  9.     print(row)
  10.    
  11. client.disconnect()
复制代码
执行插入时,data的拼接是有规则限定的;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4