首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python操作ClickHouse大数据库入门教程

01 Python操作ClickHouse大数据库入门教程

Docker部署ClickHouse

将相关资料上传到服务器。

导入镜像:

docker?load?-i?clickhouse22_v1.tar

创建目录:

mkdir?-p?/docker/clickhouse/conf

mkdir?-p?/docker/clickhouse/data

mkdir?-p?/docker/clickhouse/log

将两个配置文件复制到conf目录。

mv?*.xml?/docker/clickhouse/conf/

创建容器:

docker?run?-d?--name=clickhouse?-p?8123:8123?--volume=/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml?--volume=/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml?--volume=/docker/clickhouse/data:/var/lib/clickhouse/?clickhouse/clickhouse-server:22.8.14.53

账号1:root zhangdapeng520账号2:zhangdapeng zhangdapeng520

准备Python环境

安装Python3.8

配置国内源:

pip?config?set?global.index-url?https://pypi.tuna.tsinghua.edu.cn/simple

安装依赖:

pip?install?clickhouse-connect==0.6.22

连接CK

核心代码:

ck_conn?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

完整实例:

import?clickhouse_connect

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

ck_conn?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

print(ck_conn)

创建数据库表

核心代码:

client.command('CREATE?TABLE?user?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

完整实例:

import?clickhouse_connect

#?02?创建数据库表

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

print(client)

#?创建数据库表

client.command('CREATE?TABLE?user?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

删除数据库表

import?clickhouse_connect

#?04?删除数据库表

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

print(client)

#?删除数据库表

client.command('drop?table?if?exists?user')

新增数据

import?clickhouse_connect

#?05?新增数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

根据ID查询数据

import?clickhouse_connect

#?06?根据ID查询数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?根据ID查询数据

id?=?1

result?=?client.query(f'SELECT?*?FROM?{table}?where?id={id}')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

查询所有数据

import?clickhouse_connect

#?07?查询所有数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?查询所有数据

result?=?client.query(f'SELECT?*?FROM?{table}')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

根据ID修改数据

import?time

import?clickhouse_connect

#?08?根据ID修改数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?IF?NOT?EXISTS?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?根据ID修改数据

id?=?1

client.command(f"ALTER?TABLE?{table}?UPDATE?name='张三333'?where?id={id}")

time.sleep(1)

#?根据ID查询数据

id?=?1

result?=?client.query(f'SELECT?*?FROM?{table}?where?id={id}')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

根据ID删除数据

import?time

import?clickhouse_connect

#?09?根据ID删除数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?IF?NOT?EXISTS?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?根据ID删除数据

id?=?1

client.command(f"ALTER?TABLE?{table}?DELETE?WHERE?id={id}")

time.sleep(1)

#?查询数据

result?=?client.query(f'SELECT?*?FROM?{table}')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

分页查询数据

import?clickhouse_connect

#?10?分页查询数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?分页查询数据

result?=?client.query(f'SELECT?*?FROM?{table}?limit?2?offset?0')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

排序查询数据

import?clickhouse_connect

#?11?排序查询数据

#?准备参数

host?=?"127.0.0.1"

port?=?8123

username?=?"zhangdapeng"

password?=?"zhangdapeng520"

database?=?"default"

#?建立连接

client?=?clickhouse_connect.get_client(

host=host,

port=port,

database=database,

username=username,

password=password,

)

#?创建数据库表

table?=?"user"

columns?=?["id",?"name",?"age"]

client.command(f'CREATE?TABLE?{table}?(id?UInt32,?name?String,?age?UInt32)?ENGINE?MergeTree?ORDER?BY?id')

#?新增数据

zs?=?[1,?'张三',?23]

ls?=?[2,?'李四',?24]

ww?=?[3,?'王五',?35]

data?=?[zs,?ls,?ww]

client.insert(table,?data,?column_names=columns)

#?排序查询数据

result?=?client.query(f'SELECT?*?FROM?{table}?order?by?age?desc?limit?2?offset?0')

print(result.result_rows)

#?删除数据库表

client.command(f'drop?table?if?exists?{table}')

总结

本教程讲解了Python操作ClickHouse的常用操作,包括:

新增

删除

修改

查询

分页

排序

另外,还讲解了如何基于Docker部署ClickHouse。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ODjD5gdQosuFWv-ZeGYLqELQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com