一、簡介
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/zh-hk/n/242404.html