当前位置: 首页 > news >正文

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 数据库。

http://www.jsqmd.com/news/319077/

相关文章:

  • 【C标准库】一文吃透 C 语言 assert 断言
  • 从 JSON Schema 到企业级动态数据模型:动态表单的终极演进路线
  • 社会网络仿真软件:NetLogo_(13).社会网络仿真在公共卫生领域的应用
  • 社会网络仿真软件:NetLogo_(16).NetLogo模型分享与发布
  • Doris与Flink整合实战:构建流批一体的大数据处理平台
  • 社会网络仿真软件:NetLogo_(16).NetLogo与其他软件的集成
  • 选九影网络做游戏定制开发,硬核技术壁垒,全流程技术护航
  • 搬了 - guiding
  • 社会网络仿真软件:NetLogo_(12).NetLogo模型调试与测试
  • 书单推荐之豆包高效学习:AI时代的教育破局指南
  • 社会网络仿真软件:NetLogo_(12).社会网络仿真在社会科学中的应用
  • 告别 `print` 调试:构建生产级 Python 应用的日志系统
  • 计算机Java毕设实战-基于springboo的社团成员活动策划组织管理系统(【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 为什么不同天猫超市购物卡回收平台价格不一样?
  • 计算机Java毕设实战-基于小程序的上班企业考勤签到签退下班打卡系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Google Maps 多 Marker 场景下 InfoWindow
  • 手动搭MySQL MGR集群太费时间?一键自动化工具安排上
  • 数据库运维核心:MySQL主从复制与读写分离的部署与维护
  • 当我们系统出现msvcr100.dll文件丢失问题 免费下载方法分享
  • 搬了
  • 当系统出现找不到msvcr120.dll文件问题 免费下载方法分享
  • 社会网络仿真软件:NetLogo_(17).社会网络仿真的伦理与隐私问题
  • 社会网络仿真软件:NodeXL_(3).NodeXL安装与基本设置
  • Java计算机毕设之基于微信小程序的学生成绩管理系统基于小程序的高校班级管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 社会网络仿真软件:NetLogo_(18).社会网络仿真结果的解释与报告
  • DDD领域驱动设计之实战指南:从理论到落地的完整实践
  • 【毕业设计】基于springboo的社团管理系统((源码+文档+远程调试,全bao定制等)
  • 《建议收藏》耗时一周,把 FFmpeg 音视频编解码彻底讲透了!从原理到实战,这一篇就够了!
  • 【毕业设计】基于小程序的企业考勤系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 智能体之拆解 Clawdbot:从架构设计到提示词哲学的全链路硬核解析