关键词

python连接clickhouse数据库的两种方式小结

Python连接ClickHouse数据库的两种方式小结

ClickHouse是一款快速、高效的列式数据库,它的速度比其他数据库要快得多。对于需要处理大量数据的场景而言,ClickHouse具有不可替代的优势。

本文将介绍两种Python连接ClickHouse数据库的方式。

方式一:使用clickhouse-driver模块

clickhouse-driver是官方提供的一个Python驱动程序,可以轻松地连接ClickHouse数据库。

安装clickhouse-driver

在命令行中执行以下命令即可安装clickhouse-driver:

pip install clickhouse-driver

示例一:连接ClickHouse并查询数据

import clickhouse_driver

conn = clickhouse_driver.connect(
    host='localhost',
    port=8123,
    user='default',
    password=''
)

cursor = conn.cursor()

cursor.execute('SELECT * FROM my_database.my_table LIMIT 10')

result = cursor.fetchall()

print(result)

上述代码中,我们使用connect方法连接ClickHouse,指定了ClickHouse的主机名、端口号、用户名和密码,使用execute方法执行SQL语句并使用fetchall方法获取查询结果。

示例二:插入数据

import clickhouse_driver

conn = clickhouse_driver.connect(
    host='localhost',
    port=8123,
    user='default',
    password=''
)

cursor = conn.cursor()

insert_query = 'INSERT INTO my_database.my_table (col1, col2, col3) VALUES'

rows = [
    (1, "a", 100),
    (2, "b", 200),
    (3, "c", 300),
]

values = ','.join(map(str, rows))

query = f'{insert_query} {values}'

cursor.execute(query)

上述代码中,我们使用INSERT INTO语句向ClickHouse插入数据。我们通过连接ClickHouse并使用cursor对象执行INSERT INTO语句实现了数据的插入。这里我们使用了map方法将rows的每一行数据转换为字符串,并使用join方法将其连接成一个单独的字符串,最终拼接成完整的INSERT INTO语句。

方式二:使用pandas dataframe

Pandas是Python中非常受欢迎的数据处理工具,它可以与ClickHouse数据库轻松地集成,因此我们可以使用pandas dataframe来连接并操作ClickHouse数据库。

安装clickhouse-clickhouse-driver-pandas

在命令行中执行以下命令即可安装clickhouse-clickhouse-driver-pandas:

pip install clickhouse-clickhouse-driver-pandas

示例一:连接ClickHouse并查询数据

import pandas as pd
from clickhouse_driver import Client

client = Client(
    host='localhost',
    port=8123,
    user='default',
    password=''
)

query = 'SELECT * FROM my_database.my_table LIMIT 10'

result = client.execute(query)

df = pd.DataFrame(result, columns=['col1', 'col2', 'col3'])

print(df)

上述代码中,我们使用Client方法连接到ClickHouse,然后使用execute方法执行SQL语句并将结果存储在result中,最后使用pandas方法DataFrame将结果转化为DataFrame对象,以便于进行后续的数据处理。

示例二:插入数据

import pandas as pd
from clickhouse_driver import Client

client = Client(
    host='localhost',
    port=8123,
    user='default',
    password=''
)

df = pd.DataFrame({
    'col1': [1, 2, 3],
    'col2': ['a', 'b', 'c'],
    'col3': [100, 200, 300]
})

client.execute('CREATE DATABASE IF NOT EXISTS my_database')
client.execute('CREATE TABLE IF NOT EXISTS my_database.my_table (col1 Int64, col2 String, col3 Int64) ENGINE = Memory')

client.execute('INSERT INTO my_database.my_table (col1, col2, col3) VALUES', df.to_records(index=False).tolist())

上述代码中,我们使用pandas dataframe将数据批量插入到ClickHouse数据库中。首先,我们创建DataFrame,并使用tolist方法将其转换为列表,然后使用to_records方法转换为一组记录。最后,我们使用execute方法执行INSERT INTO语句,将DataFrame中的记录插入到ClickHouse中。

本文链接:http://task.lmcjl.com/news/7424.html

展开阅读全文