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

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

在这里插入图片描述

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

Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用,大家好,我是 xcLeigh。现在国产化数据库越来越普及,金仓数据库(KingbaseES)作为一款超实用的企业级关系型数据库,在政府、金融、能源这些关键领域用得特别多。今天我就带大家从零开始,一步步学会用Python操作金仓数据库,从环境准备、连接数据库,到CRUD核心操作、事务处理,再到常见问题排查,内容全是干货,代码拿过去就能用,就算是新手也能很快上手!
在这里插入图片描述

前言

在这里插入图片描述

    中电科金仓(北京)科技股份有限公司(以下简称“电科金仓”)成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是中国电子科技集团(CETC)成员企业。电科金仓以“提供卓越的数据库产品助力企业级应用高质量发展”为使命,致力于“成为世界卓越的数据库产品与服务提供商”。

    电科金仓自成立起始终坚持自主创新,专注数据库领域二十余载,具备出色的数据库产品研发及服务能力,核心产品金仓数据库管理系统KingbaseES(简称“KES”)是面向全行业、全客户关键应用的企业级大型通用数据库。KES产品V9版本已通过国家权威机构认证,产品核心源代码自主率达到100%。2018年,电科金仓申报的“数据库管理系统核心技术的创新与金仓数据库产业化”项目荣获国家科学技术进步二等奖。金仓数据库管理系统KES于2022年入选国务院国资委发布的十项国有企业数字技术典型成果,彰显数据库领域国家队硬实力。继2023年金仓数据库管理系统V8通过第一批《安全可靠测评》后,2024年金仓数据库管理系统V9、金仓分布式HTAP数据库软件集群V3再度入围,至此电科金仓共计2款产品3个版本通过《安全可靠测评》*。

在这里插入图片描述

🥇 点击进入金仓数据库专栏,本专栏聚焦金仓数据库(KingbaseES)这一国产企业级融合数据库,为开发者及技术决策者提供从基础操作到架构设计的系统化学习路径。从多语法兼容(Oracle/MySQL/PostgreSQL)、多模数据存储(关系 / 文档 / 时序 / GIS)等功能展开讲解!


🌞 正文开始:


一、前置知识与环境准备

1.1 核心概念

金仓数据库(KingbaseES)在数据库产品研发和服务方面能力很突出,它的核心产品金仓数据库管理系统KingbaseES(简称“KES”),是面向全行业、全客户关键应用的企业级大型通用数据库。而且KES的V9版本已经通过国家权威机构认证,核心源代码自主率更是做到了100%,这一点特别厉害。

1.2 环境清单

  • 操作系统:Windows 10/11 或者 CentOS 7/8都能用
  • Python版本:得是3.7及以上的,不然可能会有兼容性问题
  • 金仓数据库:推荐用KingbaseES V8R6,这个版本兼容性比较好,用着省心
  • 依赖库:psycopg2-binary,这个库不用咱们手动编译,直接安装就行,很方便

1.3 环境搭建步骤

步骤1:安装Python:先去Python官网下载对应版本的安装包,安装的时候记得勾选“Add Python to PATH”,然后按默认步骤装完就行。装完之后,打开命令行输入python --version,能显示版本号就说明装成功了。对了,要是不清楚怎么操作,也可以看看我之前写的这篇文章:https://xcleigh.blog.ZEEKLOG.net/article/details/149340832

步骤2:安装psycopg2-binary:打开命令行,直接执行下面这个命令就能安装这个依赖库:

pip install psycopg2-binary 

装完之后,Windows系统可以用pip list | findstr psycopg2,Linux系统用pip list | grep psycopg2,能看到这个库的信息,就说明安装成功了。

步骤3:确认金仓数据库服务:这一步很关键,得先确保金仓数据库已经启动了,而且能用像Kingbase Navigator这样的客户端正常连接。另外,一定要把数据库的IP地址、端口、数据库名、用户名、密码记下来,后面连接数据库的时候得用。要是这一步不清楚,也可以参考我这篇文章:https://xcleigh.blog.ZEEKLOG.net/article/details/147401270


二、Python连接金仓数据库

其实Python连接金仓数据库的原理不复杂,就是通过psycopg2库创建一个数据库连接对象,创建的时候得把金仓数据库的连接参数(比如host、port、dbname这些)都指定好。连接成功之后,再创建游标对象,就能用它来执行SQL语句了。

2.2 连接代码实现

里面的具体参数,大家得根据自己本地数据库的连接配置来填哦。

在这里插入图片描述
import psycopg2 from psycopg2 import OperationalError defconnect_kingbase():# 金仓数据库连接参数 conn_params ={"host":"127.0.0.1",# 数据库IP地址"port":54321,# 数据库端口(默认54321)"dbname":"test",# 数据库名"user":"system",# 用户名"password":"Kingbase123"# 密码} conn =Nonetry:# 建立数据库连接 conn = psycopg2.connect(**conn_params)print("✅ 金仓数据库连接成功!")except OperationalError as e:print(f"❌ 连接失败:{e}")return conn # 测试连接if __name__ =="__main__": connection = connect_kingbase()

运行效果:

在这里插入图片描述

代码说明

  • 咱们用psycopg2.connect()这个方法,把连接参数传进去,就能得到一个连接对象;
  • 这里还加了OperationalError异常捕获,像IP填错了、密码不对这些连接失败的情况,都能在这里处理;
  • 运行代码之后,要是能看到“✅ 金仓数据库连接成功!”这句话,就说明数据库连接正常啦。

三、核心操作:CRUD实战

接下来,我就以“学生表(student)”为例,给大家演示一下用Python操作金仓数据库的增删改查(CRUD)操作。首先得先创建student表,对应的SQL语句在下面:

CREATETABLE student ( id SERIALPRIMARYKEY, name VARCHAR(50)NOTNULL, age INTNOTNULL, gender VARCHAR(10)NOTNULL, major VARCHAR(100)NOTNULL);

运行效果:

在这里插入图片描述

3.1 新增数据(Create)

新增数据很简单,就是用cursor.execute()执行INSERT语句,不管是插入单条学生数据,还是多条都能搞定。

definsert_student(conn, students): insert_sql =""" INSERT INTO student (name, age, gender, major) VALUES (%s, %s, %s, %s); """try:with conn.cursor()as cur: cur.executemany(insert_sql, students) conn.commit()print(f"✅ 成功插入{cur.rowcount}条数据")except Exception as e: conn.rollback()print(f"❌ 插入失败:{e}")# 测试新增if __name__ =="__main__": conn = connect_kingbase()if conn: student_list =[("张三",20,"男","计算机科学与技术"),("李四",21,"女","软件工程"),("王五",19,"男","电子信息工程")] insert_student(conn, student_list) conn.close()

运行效果:

在这里插入图片描述


数据库数据变化:

在这里插入图片描述

3.2 查询数据(Read)

查询数据就是执行SELECT语句,不管是想查学生表的所有数据,还是加条件查询、排序,都能实现。

defquery_student(conn, condition=None):# 基础查询语句 query_sql ="SELECT * FROM student"if condition: query_sql +=f" WHERE {condition}" query_sql +=" ORDER BY id;"try:with conn.cursor()as cur: cur.execute(query_sql)# 获取列名 columns =[desc[0]for desc in cur.description]# 获取查询结果 results = cur.fetchall()# 转换为字典列表(更易读) students =[dict(zip(columns, row))for row in results]print(f"📊 查询结果(共{len(students)}条):")for student in students:print(student)return students except Exception as e:print(f"❌ 查询失败:{e}")return[]# 测试查询if __name__ =="__main__": conn = connect_kingbase()if conn:# 查询所有学生print("--- 所有学生 ---") query_student(conn)# 条件查询:年龄大于20的学生print("\n--- 年龄大于20的学生 ---") query_student(conn,"age > 20") conn.close()

运行效果:

在这里插入图片描述

3.3 更新数据(Update)

更新数据就是执行UPDATE语句,把符合指定条件的学生数据修改掉就行。

defupdate_student(conn, new_data, condition):# SQL更新语句 update_sql =f""" UPDATE student SET {', '.join([f"{k}=%s"for k in new_data.keys()])} WHERE {condition}; """try:with conn.cursor()as cur: cur.execute(update_sql,list(new_data.values())) conn.commit()print(f"✅ 成功更新{cur.rowcount}条数据")except Exception as e: conn.rollback()print(f"❌ 更新失败:{e}")# 测试更新if __name__ =="__main__": conn = connect_kingbase()if conn:# 将张三的专业改为"人工智能" update_student(conn,{"major":"人工智能"},"name='张三'")# 查看更新结果print("\n--- 更新后的张三 ---") query_student(conn,"name='张三'") conn.close()

运行效果:

在这里插入图片描述

3.4 删除数据(Delete)

删除数据也很 straightforward,执行DELETE语句,把符合指定条件的学生数据删掉就可以了。

defdelete_student(conn, condition):# SQL删除语句 delete_sql =f"DELETE FROM student WHERE {condition};"try:with conn.cursor()as cur: cur.execute(delete_sql) conn.commit()print(f"✅ 成功删除{cur.rowcount}条数据")except Exception as e: conn.rollback()print(f"❌ 删除失败:{e}")# 测试删除if __name__ =="__main__": conn = connect_kingbase()if conn:# 删除王五的记录 delete_student(conn,"name='王五'")# 查看删除结果print("\n--- 删除后的学生表 ---") query_student(conn) conn.close()

四、高级应用:事务与连接池

4.1 事务处理

金仓数据库是支持事务ACID特性的,也就是原子性、一致性、隔离性、持久性。在Python里,默认情况下,连接对象的“自动提交”是关闭的,所以得咱们手动调用commit()来提交事务,要是出了问题,就用rollback()回滚事务。
事务示例场景:比如转账的时候,要扣掉A账户的余额,同时给B账户加余额,这两步得同时成功才行。要是其中一步出了错,那整个操作都得回滚,不然账户余额就乱了。

4.2 连接池优化

在高并发的场景下,要是频繁创建、关闭数据库连接,会特别消耗资源。这时候用连接池就很管用,能有效提升性能。我推荐大家用psycopg2.pool模块来实现连接池,具体代码如下:

from psycopg2 import pool # 创建连接池 connection_pool = pool.SimpleConnectionPool( minconn=1, maxconn=5, host="192.168.1.100", port=54321, dbname="testdb", user="system", password="Kingbase123")# 从连接池获取连接 conn = connection_pool.getconn()# 执行操作...# 归还连接到连接池 connection_pool.putconn(conn)# 关闭连接池(程序退出时) connection_pool.closeall()

五、常见问题与排查技巧

5.1 连接失败

  • 问题现象:有时候会报错“could not connect to server: Connection refused”,遇到这种情况别慌,按步骤排查就行;
  • 排查步骤:首先,检查一下数据库的IP和端口是不是填对了,别输错了数字;然后,确认数据库服务是不是已经启动了,没启动的话肯定连不上;接着,看看防火墙有没有把数据库端口挡住,要是挡住了得开放端口;最后,再核对一下用户名和密码,别记混了。

5.2 语法错误

  • 问题现象:报错“syntax error at or near …”,这一般就是SQL语句有问题;
  • 排查步骤:先看看写的SQL语句是不是符合金仓数据库的语法规范,不同数据库语法可能有点差别;另外,要注意占位符得用%s,可别用?或者@这些,用错了也会报错。

5.3 事务未提交

  • 问题现象:执行了INSERT、UPDATE、DELETE这些操作后,去数据库里看,数据根本没变化,这是怎么回事呢?;
  • 排查步骤:其实很可能是忘了提交事务,大家要确认一下,执行完SQL语句后,有没有调用conn.commit()。要是没提交,等连接关闭的时候,事务会自动回滚,数据自然就没变化了。

六、总结

今天这篇文章,我把Python操作金仓数据库的全流程都讲清楚了,从环境搭建到CRUD实战,再到高级的事务和连接池应用,里面的代码示例我都实际测试过,大家拿过去就能用。掌握了这些知识,你就能轻松实现Python和金仓数据库的交互,日常开发中的需求基本都能满足。
要是觉得这篇文章对你有帮助,别忘了点赞、收藏,也可以关注我,后面我还会分享更多国产化数据库和Python相关的实战教程!要是在实践的时候遇到问题,也可以在评论区留言,我看到了会及时回复~

联系博主

    xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在ZEEKLOG、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 人工智能学习合集 🌀 搭配实例教程与实战案例,帮你构建完整 AI 知识体系

     💦 :本文撰写于ZEEKLOG平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.ZEEKLOG.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

Read more

2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格?

2026年高校AIGC检测新规解读:AI率多少算合格? 从2024年知网正式上线AIGC检测功能开始,短短两年时间,"AI率"已经从一个新鲜名词变成了每个毕业生必须面对的硬性指标。2026年,各高校的AIGC检测政策进一步收紧和细化,要求也越来越明确。 那么,2026年AI率到底多少才算合格?不同学校的标准差别大吗?不合格会面临什么后果?本文将对这些问题进行深入解读。 一、AIGC检测已成为毕业论文审查的标配 回顾AIGC检测在高校中的普及历程,可以用"指数级扩散"来形容: * 2024年:知网上线AIGC检测功能,少数985/211院校开始试点,大部分学校处于观望状态 * 2025年:超过60%的本科院校和80%的研究生培养单位将AIGC检测纳入论文审查流程 * 2026年:AIGC检测基本实现全覆盖,包括专科院校在内的绝大部分高等教育机构都已建立相关制度 这一进程的背后,是教育部在2025年初发布的《关于加强高等学校学位论文学术诚信管理的指导意见》,其中明确提到"鼓励各高校引入人工智能生成内容检测机制,将AIGC检测作为论文质量保障的重要环节"。 虽然教育部没

By Ne0inhk

OpenClaw之Memory配置成本地模式,Ubuntu+CUDA+cuDNN+llama.cpp

文章目录 * 背景:Memory不生效的问题 * OpenClaw的Memory配置 * Ubuntu24.04安装CUDA和cuDNN * 编译llama.cpp * 验证方案1: * 验证方案2:下载并运行Llama-2 7B模型 * 安装node-llama-cpp * 验证Memory * sqlite-vec unavailable * 踩过的坑 * 安装node-llama-cpp的一些提示 * 安装node-llama-cpp的前置条件 * Using `node-llama-cpp` With Vulkan 承接上文:Windows11基于WSL2首次运行Openclaw,并对接飞书应用,我已经在电脑上安装了OpenClaw,接下来解决Memory问题。走了很多弯路,下面主要讲我总结的正确的安装过程。 总结来说:针对Memory不生效的问题,又不想用OpenAI或Gemini,或者只想单纯的节省token,可以按照如下的方式,设置为local模式: * 修改openclaw.json配置 * 安装CUDA和cu

By Ne0inhk

Stable Diffusion v1-5-pruned.safetensors本地部署指南

Stable Diffusion v1-5-pruned.safetensors 本地部署与 LoRA 微调实战指南 在消费级 GPU 上跑通一个 AI 图像生成模型,曾经是件门槛极高的事。动辄几十 GB 的显存占用、复杂的环境配置、晦涩的训练脚本……这些都曾让许多创作者望而却步。但如今,随着 .safetensors 格式的普及和 LoRA 技术的成熟,我们已经可以在一张 RTX 3090 上,用不到 10GB 显存完成一次完整的风格微调。 这一切的核心起点,正是 Stable Diffusion v1-5-pruned.safetensors —— 这个名字看似冗长,实则浓缩了当前本地 AIGC 实践中最关键的技术组合:轻量化基础模型 + 安全权重格式 + 高效微调机制。 为什么选择 v1-5-pruned.safetensors? 当你打开 Hugging

By Ne0inhk
AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

文章目录 * 一、技术范式重构:从指令集到语义认知网络 * 1.1 多模态语义解析器的进化路径 * 1.2 提示词工程的认知分层 * 二、交互革命:从提示词到意图理解 * 2.1 自然语言交互的认知进化 * 2.2 专业领域的认知增强 * 三、未来技术图谱:2025-2030演进路线 * 3.1 2025年关键突破 * 3.2 2027年技术里程碑 * 3.3 2030年技术愿景 * 四、伦理与治理:构建可信语义化AI * 4.1 动态伦理约束框架 * 4.2 提示词审计系统 * 五、开发者能力升级路线图 * 5.1 核心技能矩阵 * 5.2 典型学习路径 * 结语 * 《驱动AI:

By Ne0inhk