news 2026/4/16 12:55:55

Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用

安装必要的驱动和工具

KingbaseES提供了Python的适配驱动psycopg2kingbase-python。推荐使用psycopg2,因其兼容PostgreSQL协议且社区支持更广泛。通过pip安装:

pip install psycopg2-binary

若需使用官方驱动,需从KingbaseES官网下载kingbase-python驱动包,解压后运行:

python setup.py install

配置数据库连接参数

连接KingbaseES需要以下参数:主机地址、端口(默认54321)、数据库名、用户名、密码。示例配置字典:

db_config = { "host": "127.0.0.1", "port": "54321", "database": "test_db", "user": "system", "password": "your_password" }

建立数据库连接

使用psycopg2建立连接并创建游标:

import psycopg2 conn = psycopg2.connect(**db_config) cursor = conn.cursor()

执行简单查询验证连接:

cursor.execute("SELECT version();") print(cursor.fetchone())

执行CRUD操作

创建表

create_table_sql = """ CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) UNIQUE ) """ cursor.execute(create_table_sql) conn.commit()

插入数据

insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)" cursor.execute(insert_sql, ("张三", "zhangsan@example.com")) conn.commit()

批量插入

data = [("李四", "lisi@example.com"), ("王五", "wangwu@example.com")] cursor.executemany(insert_sql, data) conn.commit()

查询数据

cursor.execute("SELECT * FROM users WHERE name LIKE %s", ("张%",)) for row in cursor.fetchall(): print(row)

事务管理与异常处理

使用上下文管理器确保资源释放:

try: with conn.cursor() as cursor: cursor.execute("UPDATE users SET email=%s WHERE id=%s", ("new_email@example.com", 1)) conn.commit() except psycopg2.Error as e: conn.rollback() print(f"数据库错误: {e}") finally: if conn is not None: conn.close()

使用连接池提升性能

对于高频访问场景,建议使用psycopg2.pool

from psycopg2 import pool connection_pool = pool.SimpleConnectionPool( minconn=1, maxconn=10, **db_config )

获取连接示例:

conn = connection_pool.getconn() cursor = conn.cursor() cursor.execute("SELECT * FROM users") connection_pool.putconn(conn)

数据类型映射处理

KingbaseES与Python类型自动转换,特殊类型需注意:

  • BYTEA类型使用psycopg2.Binary包装
  • JSON类型直接传递Python字典

示例JSON操作:

import json cursor.execute("CREATE TABLE data (id SERIAL, info JSONB)") cursor.execute("INSERT INTO data (info) VALUES (%s)", (json.dumps({"key": "value"}),))

性能优化技巧

启用预处理语句:

cursor.execute("PREPARE user_query AS SELECT * FROM users WHERE id=$1") cursor.execute("EXECUTE user_query (1)", [1])

使用服务器端游标处理大数据集:

cursor = conn.cursor('server_side_cursor') cursor.itersize = 1000 # 每次获取1000条 cursor.execute("SELECT * FROM large_table") for row in cursor: process_row(row)

常用运维操作

备份数据库命令(需使用kb_dump工具):

kb_dump -h 127.0.0.1 -p 54321 -U system -F c -f backup.dump test_db

恢复数据库:

kb_restore -h 127.0.0.1 -p 54321 -U system -d test_db backup.dump

https://www.zhihu.com/zvideo/1992385373905654507/
https://www.zhihu.com/zvideo/1992385371703628812/
https://www.zhihu.com/zvideo/1992385370181092667/
https://www.zhihu.com/zvideo/1992385365475087279/
https://www.zhihu.com/zvideo/1992385364946600276/
https://www.zhihu.com/zvideo/1992385364212613491/
https://www.zhihu.com/zvideo/1992385364644619208/
https://www.zhihu.com/zvideo/1992385364011267670/
https://www.zhihu.com/zvideo/1992385361096250275/
https://www.zhihu.com/zvideo/1992385358852298426/
https://www.zhihu.com/zvideo/1992385355186446722/
https://www.zhihu.com/zvideo/1992385353466791686/
https://www.zhihu.com/zvideo/1992385348307788190/
https://www.zhihu.com/zvideo/1992385346567157317/
https://www.zhihu.com/zvideo/1992385341378798004/
https://www.zhihu.com/zvideo/1992385341085209633/
https://www.zhihu.com/zvideo/1992385340955177118/
https://www.zhihu.com/zvideo/1992385336144307915/
https://www.zhihu.com/zvideo/1992385335276115264/
https://www.zhihu.com/zvideo/1992385330452649728/
https://www.zhihu.com/zvideo/1992385328812664040/
https://www.zhihu.com/zvideo/1992385326325445146/
https://www.zhihu.com/zvideo/1992385325612414583/
https://www.zhihu.com/zvideo/1992385325381734592/
https://www.zhihu.com/zvideo/1992385324026982943/
https://www.zhihu.com/zvideo/1992385317852963935/
https://www.zhihu.com/zvideo/1992385310621984493/
https://www.zhihu.com/zvideo/1992385309548250555/
https://www.zhihu.com/zvideo/1992385307849553168/
https://www.zhihu.com/zvideo/1992385306482217062/
https://www.zhihu.com/zvideo/1992385305425250200/
https://www.zhihu.com/zvideo/1992385301088342975/
https://www.zhihu.com/zvideo/1992385298768863440/
https://www.zhihu.com/zvideo/1992385298605315785/
https://www.zhihu.com/zvideo/1992385291441440502/
https://www.zhihu.com/zvideo/1992385289184883945/
https://www.zhihu.com/zvideo/1992385285414220040/
https://www.zhihu.com/zvideo/1992385282188804226/
https://www.zhihu.com/zvideo/1992385280712402690/

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

那个在DG数据库中将多行指定字段的文本替换操作

将java实践作业\imgs\headIco\全部替换为/upload/avatar/,怎么多行操作sql语句UPDATE 表名 SET 你的字段名 REPLACE(你的字段名, 被替换者字符串, 替换者字符串)UPDATE rolemestable SET HeadSrc REPLACE(HeadSrc, java实践作业\\imgs\\headIco\\, /upload/avatar…

作者头像 李华
网站建设 2026/4/16 12:50:49

基于深度学习的智慧识花系统的设计与实现(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

摘要 深度学习作为机器学习的一个重要分支,经过十多年的研究和发展,在计算机视觉分类、定位、检测和分割方面取得了良好的效果。花卉图像是一种典型的细粒度图像,具有许多复杂的特征,难以区分和识别。使用传统的方法识别花朵图像既…

作者头像 李华
网站建设 2026/4/14 16:18:28

Thinkphp和Laravel框架的精诺企业数字化精益制造生产系统_i36pxop6

目录ThinkPHP与Laravel框架在精诺企业数字化精益制造系统中的应用ThinkPHP框架的应用特点Laravel框架的技术优势系统核心功能与价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理ThinkPHP与Laravel框架在精诺企业数字化精益制造系统中的应用 精…

作者头像 李华
网站建设 2026/4/14 0:26:23

医疗OCR用Tesseract稳缩写识别

📝 博客主页:jaxzheng的CSDN主页 医疗OCR中Tesseract的稳定缩写识别:技术挑战与创新实践目录医疗OCR中Tesseract的稳定缩写识别:技术挑战与创新实践 引言:当缩写成为医疗数据的“隐形障碍” 一、医疗OCR缩写识别&#…

作者头像 李华
网站建设 2026/4/10 23:23:20

专科生必看!8个降AI率工具,高效避坑指南

专科生必看!8个降AI率工具,高效避坑指南 AI降重工具:高效避坑的必备利器 随着人工智能技术的快速发展,越来越多的专科生在撰写论文时开始使用AI工具进行辅助。然而,AI生成的内容往往存在明显的“AI痕迹”,不…

作者头像 李华
网站建设 2026/4/15 3:17:03

Linux用户、组创建

#创建指定组ID的xixi组 groupadd -g 3001 xixi#创建指定用户ID的ADMIN用户,并加入进xixi组 useradd -u 3001 -G xixi ADMIN #创建指定用户ID的APP用户,并加入进xixi组 useradd -u 3002 -G xixi APP#设置两用户密码永不过期 chage -M 99999 ADMIN chage -…

作者头像 李华