跳到主要内容

Python

Databend 为您提供以下 Python 包,使您能够开发与 Databend 交互的 Python 应用程序:

  • databend-py (推荐):提供直接接口连接 Databend 数据库。它允许您执行标准的 Databend 操作,如用户登录、数据库和表的创建、数据插入/加载和查询。
  • databend-sqlalchemy:提供 SQL 工具包和对象关系映射来与 Databend 数据库交互。SQLAlchemy是一个流行的 Python SQL 工具包和 ORM,databend-sqlalchemy 是 SQLAlchemy 的一个方言,允许您使用 SQLAlchemy 与 Databend 交互。

这两个包都需要 Python 版本 3.5 或更高。要检查您的 Python 版本,请在命令提示符中运行python --version。要安装最新的databend-pydatabend-sqlalchemy包:

# 安装 databend-py
pip install databend-py

# 安装 databend-sqlalchemy
pip install databend-sqlalchemy

在以下教程中,您将学习如何使用上述包来开发您的 Python 应用程序。教程将指导您在 Databend 中创建 SQL 用户,然后编写 Python 代码来创建表、插入数据和执行数据查询。

教程-1:使用 Python 与 Databend 集成

在开始之前,请确保您已成功安装了本地 Databend。有关详细说明,请参见Docker 和本地部署

步骤 1. 准备 SQL 用户账户

要连接您的程序到 Databend 并执行 SQL 操作,您必须在代码中提供具有适当权限的 SQL 用户账户。如有需要,在 Databend 中创建一个,并确保 SQL 用户仅具有出于安全考虑所需的必要权限。

本教程使用名为'user1',密码为'abc123'的 SQL 用户作为示例。由于程序将向 Databend 写入数据,用户需要 ALL 权限。有关如何管理 SQL 用户及其权限的信息,请参见用户与角色

CREATE USER user1 IDENTIFIED BY 'abc123';
GRANT ALL on *.* TO user1;

步骤 2. 配置连接字符串(针对 databend-py)

databend-py支持可以作为 URL 参数或作为传递给 Client 的属性配置的各种参数。下面提供的两个示例展示了为常见 DSN 设置这些参数的等效方法:

示例 1:使用 URL 参数

# 格式:<schema>://<username>:<password>@<host_port>/<database>?<connection_params>
client = Client.from_url('http://root@localhost:8000/db?secure=False&copy_purge=True&debug=True')

示例 2:使用 Client 参数

client = Client(
host='tenant--warehouse.ch.datafusecloud.com',
database="default",
user="user",
port="443",
password="password", settings={"copy_purge": True, "force": True})

要创建有效的 DSN,请根据您的需求选择适当的连接参数,详细信息请参见这里

步骤 3. 编写 Python 程序

在此步骤中,您将创建一个与 Databend 通信的简单 Python 程序。程序将涉及创建表、插入数据和执行数据查询等任务。

您将使用 databend-py 库创建客户端实例并直接执行 SQL 查询。

  1. 安装 databend-py。
pip install databend-py
  1. 将以下代码复制并粘贴到文件main.py中:
main.py
from databend_py import Client

# 连接到本地Databend,使用名为'user1'且密码为'abc123'的SQL用户作为示例。
# 在保持相同格式的情况下,随意使用您自己的值。
# 设置secure=False意味着客户端将通过HTTP而不是HTTPS连接到Databend。
client = Client('user1:abc123@127.0.0.1', port=8000, secure=False)
client.execute("CREATE DATABASE IF NOT EXISTS bookstore")
client.execute("USE bookstore")
client.execute("CREATE TABLE IF NOT EXISTS booklist(title VARCHAR, author VARCHAR, date VARCHAR)")
client.execute("INSERT INTO booklist VALUES('Readings in Database Systems', 'Michael Stonebraker', '2004')")

_, results = client.execute("SELECT * FROM booklist")
for (title, author, date) in results:
print("{} {} {}".format(title, author, date))
client.execute('drop table booklist')
client.execute('drop database bookstore')

# 关闭连接。
client.disconnect()
  1. 运行python main.py
Readings in Database Systems Michael Stonebraker 2004

教程-2:使用 Python 集成 Databend Cloud(databend-py)

在开始之前,请确保您已成功创建仓库并获取了连接信息。如何做到这一点,请参见连接到计算集群

步骤 1. 使用 pip 安装依赖

pip install databend-py

步骤 2. 使用 databend-py 连接

from databend_py import Client

client = Client.from_url(f"databend://{USER}:{PASSWORD}@${HOST}:443/{DATABASE}?&warehouse={WAREHOUSE_NAME})
client.execute('DROP TABLE IF EXISTS data')
client.execute('CREATE TABLE if not exists data (x Int32,y VARCHAR)')
client.execute('DESC data')
client.execute("INSERT INTO data (Col1,Col2) VALUES ", [1, 'yy', 2, 'xx'])
_, res = client.execute('select * from data')
print(res)

教程-3:使用 Python 集成 Databend Cloud(databend-sqlalchemy)

在开始之前,请确保您已成功创建仓库并获取了连接信息。如何做到这一点,请参见连接到计算集群

步骤 1. 使用 pip 安装依赖

pip install databend-sqlalchemy

步骤 2. 使用 Databend SQLAlchemy 连接

from databend_sqlalchemy import connector

cursor = connector.connect(f"databend://{USER}:{PASSWORD}@${HOST}:443/{DATABASE}?&warehouse={WAREHOUSE_NAME}).cursor()
cursor.execute('DROP TABLE IF EXISTS data')
cursor.execute('CREATE TABLE IF NOT EXISTS data( Col1 TINYINT, Col2 VARCHAR )')
cursor.execute("INSERT INTO data (Col1,Col2) VALUES ", [1, 'yy', 2, 'xx'])
cursor.execute("SELECT * FROM data")
print(cursor.fetchall())
提示

请将代码中的 {USER}、{PASSWORD}、{HOST}、{WAREHOUSE_NAME} 和 {DATABASE} 替换为您的连接信息。如何获取连接信息,请参见连接到计算集群

这篇文章对您有帮助吗?
Yes
No