news 2026/4/8 13:13:33

Python连接KingbaseES全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python连接KingbaseES全指南

好的,这是一个使用ksycopg2库在 Python 中连接和操作 KingbaseES 数据库的完整指南。


1. 安装依赖

首先,确保已安装ksycopg2包。它是psycopg2的一个分支,专为 KingbaseES 设计。

pip install ksycopg2

2. 建立数据库连接

导入库并使用连接参数创建连接对象。

import ksycopg2 # 配置连接参数 db_params = { "dbname": "your_database", # 数据库名 "user": "your_username", # 用户名 "password": "your_password", # 密码 "host": "localhost", # 主机地址 "port": "54321" # 端口(默认为54321) } try: # 建立连接 conn = ksycopg2.connect(**db_params) print("连接成功!") # 创建游标对象 cursor = conn.cursor() except ksycopg2.Error as e: print(f"连接失败: {e}")

3. 执行SQL查询

通过游标执行SQL语句,处理查询结果。

# 示例:查询数据 try: cursor.execute("SELECT id, name FROM users;") rows = cursor.fetchall() print("查询结果:") for row in rows: print(f"ID: {row[0]}, Name: {row[1]}") except ksycopg2.Error as e: print(f"查询失败: {e}")

4. 执行数据修改操作

插入、更新或删除数据时需显式提交事务。

# 示例:插入数据 try: cursor.execute( "INSERT INTO users (name, email) VALUES (%s, %s);", ("张三", "zhangsan@example.com") ) conn.commit() # 提交事务 print("数据插入成功!") except ksycopg2.Error as e: conn.rollback() # 回滚事务 print(f"插入失败: {e}")

5. 使用参数化查询

重要!使用参数化查询避免SQL注入。

user_id = 10 cursor.execute("SELECT * FROM logs WHERE user_id = %s;", (user_id,))

6. 执行DDL操作

创建表、修改结构等操作也需提交事务。

try: cursor.execute(""" CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, price NUMERIC(10, 2) ); """) conn.commit() print("表创建成功!") except ksycopg2.Error as e: conn.rollback() print(f"DDL操作失败: {e}")

7. 错误处理

使用try-except捕获常见异常:

  • OperationalError: 连接问题
  • DataError: 数据格式错误
  • IntegrityError: 违反约束
try: cursor.execute("SELECT invalid_column FROM non_existent_table;") except ksycopg2.ProgrammingError as e: print(f"SQL语法错误: {e}")

8. 关闭连接

完成操作后释放资源。

# 关闭游标和连接 cursor.close() conn.close() print("连接已关闭")

完整示例代码

import ksycopg2 def main(): conn = None try: conn = ksycopg2.connect( dbname="test_db", user="admin", password="secure_pass", host="192.168.1.100", port="54321" ) cursor = conn.cursor() # 创建表 cursor.execute(""" CREATE TABLE IF NOT EXISTS employees ( id SERIAL PRIMARY KEY, name VARCHAR(50), department VARCHAR(50) ); """) # 插入数据 cursor.execute( "INSERT INTO employees (name, department) VALUES (%s, %s)", ("李四", "技术部") ) # 查询验证 cursor.execute("SELECT * FROM employees;") for record in cursor.fetchall(): print(record) conn.commit() except ksycopg2.DatabaseError as e: print(f"数据库错误: {e}") if conn: conn.rollback() finally: if conn: cursor.close() conn.close() if __name__ == "__main__": main()

关键注意事项

  1. 事务管理:所有写操作后必须调用conn.commit()
  2. 资源释放:使用finally块确保关闭连接
  3. 连接池:生产环境建议使用连接池(如psycopg2.pool
  4. SSL连接:如需加密,添加sslmode="require"参数

通过以上步骤,你可以安全高效地在 Python 中操作 KingbaseES 数据库。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 16:19:40

ubuntu通过windows主机访问网络

背景:校园网限制用户连接数量 方法:用usb网卡。用一台windows主机连接校园网登录,插usb网卡连网线到ubuntu机器;ubuntu机器不需要什么额外配置,windows更改网络适配器设置,把 校园网连接->属性->共享…

作者头像 李华
网站建设 2026/4/5 20:13:36

Doris与Flink整合实战:构建流批一体的大数据处理平台

Doris与Flink整合实战:构建流批一体的大数据处理平台 关键词:Doris、Flink、流批一体、大数据处理平台、实时计算 摘要:本文聚焦于Doris与Flink的整合,旨在构建流批一体的大数据处理平台。详细介绍了Doris和Flink的核心概念及两者…

作者头像 李华
网站建设 2026/4/6 20:26:07

【C标准库】一文吃透 C 语言 assert 断言

文章目录一、assert 是什么?二、基本语法和使用步骤2.1 核心语法2.2 最简单的示例三、assert 的工作机制3.1 如何定义 NDEBUG(关闭断言)?四、assert 的适用场景五、assert 的使用禁忌禁忌1:断言中包含有副作用的表达式…

作者头像 李华
网站建设 2026/4/3 4:43:55

社会网络仿真软件:NetLogo_(17).NetLogo教学与研究资源

NetLogo教学与研究资源 在社会网络仿真的研究和教学中,NetLogo 提供了丰富的资源和工具,帮助用户更好地理解和应用这一强大的仿真平台。本节将详细介绍 NetLogo 的教学与研究资源,包括官方文档、示例模型、在线教程、社区支持以及第三方资源等…

作者头像 李华
网站建设 2026/4/4 21:21:01

社会网络仿真软件:NodeXL_(3).NodeXL安装与基本设置

NodeXL安装与基本设置 在开始使用NodeXL进行社会网络分析之前,首先需要安装NodeXL并进行一些基本设置。本节将详细介绍如何安装NodeXL,并配置其基本环境,以便您能够顺利地进行后续的社会网络仿真和分析工作。 安装NodeXL NodeXL是一个基于…

作者头像 李华