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 AI十大趋势:木头姐《Big Ideas 2026》深度解读,解锁大加速时代的技术红利

2026 AI十大趋势:木头姐《Big Ideas 2026》深度解读,解锁大加速时代的技术红利

木头姐《Big Ideas 2026》报告指出,AI已成为撬动全球经济“大加速”的核心引擎,不再孤军奋战。本文结合报告核心数据与观点,以幽默接地气的语气,拆解2026年AI十大核心趋势,助力普通人轻松读懂技术红利。 引言 全球科技投资圈“顶流”木头姐(凯茜·伍德),带着她的十周年力作《Big Ideas 2026》如约而至!作为科技圈的“预言家手册”,这份报告每年都能精准预判行业走向,今年更是以“The Great Acceleration”(大加速)为核心,抛出震撼论断:AI早已告别“闭门造车”,成为五大创新平台的“发动机”,正引爆全球经济的变革狂欢。不同于往年聚焦单一技术,今年木头姐重点凸显AI的“全能辅助”角色——自身迭代升级的同时,还在疯狂“带飞”其他技术。接下来,我们就用最轻松的语气,拆解报告里最劲爆的AI十大趋势,

By Ne0inhk
人工智能:自然语言处理在医疗健康领域的应用与实战

人工智能:自然语言处理在医疗健康领域的应用与实战

人工智能:自然语言处理在医疗健康领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在医疗健康领域的应用场景和重要性 💡 掌握医疗健康领域NLP应用的核心技术(如电子病历分析、医学文本分类、疾病预测) 💡 学会使用前沿模型(如BERT、GPT-3)进行医疗健康文本分析 💡 理解医疗健康领域的特殊挑战(如医学术语、数据隐私、数据质量) 💡 通过实战项目,开发一个电子病历分析应用 重点内容 * 医疗健康领域NLP应用的主要场景 * 核心技术(电子病历分析、医学文本分类、疾病预测) * 前沿模型(BERT、GPT-3)在医疗健康领域的使用 * 医疗健康领域的特殊挑战 * 实战项目:电子病历分析应用开发 一、医疗健康领域NLP应用的主要场景 1.1 电子病历分析 1.1.1 电子病历分析的基本概念 电子病历分析是对电子病历文本进行分析和处理的过程。在医疗健康领域,电子病历分析的主要应用场景包括: * 病历结构化:将非结构化的电子病历文本转换为结构化数据 * 病历检索:检索相关的电子病历 * 病历质量评估:

By Ne0inhk
AI安全高阶:AI模型可解释性与安全防护的结合

AI安全高阶:AI模型可解释性与安全防护的结合

AI安全高阶:AI模型可解释性与安全防护的结合 📝 本章学习目标:本章深入探讨高阶主题,适合有一定基础的读者深化理解。通过本章学习,你将全面掌握"AI安全高阶:AI模型可解释性与安全防护的结合"这一核心主题。 一、引言:为什么这个话题如此重要 在AI技术快速发展的今天,AI安全高阶:AI模型可解释性与安全防护的结合已经成为每个AI从业者和企业管理者必须了解的核心知识。随着AI应用的深入,安全风险、合规要求、治理挑战日益凸显,掌握这些知识已成为AI时代的基本素养。 1.1 背景与意义 💡 核心认知:AI安全、合规与治理是AI健康发展的三大基石。安全是底线,合规是保障,治理是方向。三者相辅相成,缺一不可。 近年来,AI安全事件频发,合规要求日益严格,治理挑战不断升级。从数据泄露到算法歧视,从隐私侵犯到伦理争议,AI发展面临前所未有的挑战。据统计,超过60%的企业在AI应用中遇到过安全或合规问题,造成的经济损失高达数十亿美元。 1.2 本章结构概览 为了帮助读者系统性地掌握本章内容,我将从以下几个维度展开:

By Ne0inhk
医疗AI场景下算法编程的深度解析(2026新生培训讲稿)(八)

医疗AI场景下算法编程的深度解析(2026新生培训讲稿)(八)

第15章 模型融合与集成策略 在机器学习竞赛和实际应用中,模型融合(Model Ensemble)是提升预测性能的利器。通过组合多个不同的基模型,集成策略能够综合各个模型的优势,抵消单个模型的偏差和方差,从而获得比任何单一模型更稳定、更准确的预测结果。在医疗AI领域,模型融合同样具有重要价值——面对复杂多模态的医疗数据,单一模型往往难以全面捕捉所有信息,而融合多个异质模型可以提升诊断的鲁棒性和准确性。本章将从集成学习的基本思想出发,系统介绍常见的模型融合方法,包括投票法、平均法、Stacking、Blending等,并通过实战案例展示如何构建融合模型来提升疾病预测性能。 15.1 集成学习的基本思想 集成学习(Ensemble Learning)的核心思想是“三个臭皮匠,顶个诸葛亮”——通过结合多个学习器来完成学习任务,通常可以获得比单一学习器更优越的泛化性能。根据个体学习器的生成方式,集成学习主要分为两大类: * Bagging:并行训练多个独立的基学习器,然后通过平均或投票进行结合。典型代表是随机森林。Bagging主要降低方差。 * Boosting:串行训练基学习

By Ne0inhk