一、简介
ClickHouse是俄罗斯搜索引擎Yandex开发的列存储数据库,旨在为OLAP场景提供高性能、低延迟、高可用性的数据存储和查询。
clickhouseclient是一个Python操作ClickHouse的客户端库,可以方便地实现数据的读写。它支持复杂的数据类型(如Array、Tuple、Map等),并且允许直接在Python环境中进行数据操作。
二、安装和配置
1、使用pip安装clickhouse-client
pip install clickhouse-client
2、在Python中使用clickhouseclient时,需要先链接到数据库。
from clickhouse_driver import Client
client = Client(host='localhost', port=9000, user='default', password='', database='default')
三、查询数据
1、从表中查询数据
client.execute('SELECT * FROM my_table')
2、指定查询条件
client.execute('SELECT * FROM my_table WHERE id = %(id)s', {'id': 1})
3、查询部分字段
client.execute('SELECT name, age FROM my_table')
四、插入数据
1、插入一行数据
client.execute('INSERT INTO my_table (name, age) VALUES (%(name)s, %(age)s)', {'name': 'Tom', 'age': 20})
2、插入多行数据,使用executemany()函数
data = [{'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 21}]
client.execute('INSERT INTO my_table (name, age) VALUES', data)
五、更新数据
1、更新单行数据
client.execute('UPDATE my_table SET age = %(age)s WHERE name = %(name)s', {'name': 'Tom', 'age': 21})
2、更新多行数据
client.execute('UPDATE my_table SET age = %(age)s WHERE id in (%(ids)s)', {'age': 21, 'ids': [1, 2, 3]})
六、删除数据
1、删除单行数据
client.execute('DELETE FROM my_table WHERE name = %(name)s', {'name': 'Tom'})
2、删除多行数据
client.execute('DELETE FROM my_table WHERE id in (%(ids)s)', {'ids': [1, 2, 3]})
七、高级用法
1、事务支持
with client:
client.execute('INSERT INTO my_table (name, age) VALUES (%(name)s, %(age)s)', {'name': 'Tom', 'age': 20})
client.execute('UPDATE my_table SET age = %(age)s WHERE name = %(name)s', {'name': 'Tom', 'age': 21})
2、迭代查询
for row in client.execute_iter('SELECT * FROM my_table'):
print(row)
3、使用pandas进行数据查询和导入导出
import pandas as pd
df = pd.read_sql_query('SELECT * FROM my_table', client)
df.to_sql('my_table_copy', client, index=False, if_exists='replace')
八、总结
通过本文的学习,我们了解了clickhouseclient的基本用法和一些高级用法,这将有助于我们在数据存储和查询方面更加高效地进行工作。在实际开发中,需要深入学习clickhouseclient的更多细节,以便更好地使用它。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/242404.html