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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《打破边界:云服务器的多元形态进化史》

《打破边界:云服务器的多元形态进化史》当人们提及云服务器,往往先想到阿里云ECS、腾讯云CVM等传统虚拟机,但如今“云服务器”的定义已突破单一形态,演化出覆盖公有云、私有云、边缘计算、无服务器的多元生态。从虚拟化到容器化&a…

什么是路由监控组

文章目录为什么需要路由监控组路由监控组应用场景有哪些路由监控组是如何工作的路由监控组可以监控一定数目的路由,用于快速检测网络中IP路由的转发连通状况。当网络侧IP路由的转发连通状况发生变化时,通过IPv4静态路由与路由监控组联动,使接…

高通6490之完整26关节骨骼拓扑眼部跟踪集成

完整26关节骨骼拓扑 Snapdragon Spaces手部跟踪基于OpenXR标准,支持26个基本手关节(Joints[0…25]数组索引,对应XrHandJoint枚举)。额外6个辅助关节(26-31)可选使用,但核心可视化为26个。 26关节列表(标准OpenXR索引顺序) 索引 OpenXR枚举 Unity XR Hands名称 解剖位…

RAG技术详解:从原理到实践,让你轻松掌握大模型增强技术

本文全面介绍了RAG(检索增强生成)技术,包括其定义、演进历程(Naive RAG、Advanced RAG、Modular RAG)及工作流程。文章详细拆解了RAG的七步工作流程:知识分块、生成嵌入、向量存储、用户查询嵌入、语义检索…

B站用户弹幕情感可视化分析的python实现(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

B站用户弹幕情感可视化分析的python实现 摘要 随着自媒体时代的兴起,弹幕语言在哔哩哔哩弹幕视频网站(简称 B 站)中的作用 不容小觑。弹幕作为一种实时评论,表达出了用户观看视频当下的情感与看法。本文对 B 站弹幕文本进行情感倾…

FastAPI 极简教程(偏实战,一篇搞定)

FastAPI 极简教程(偏实战,一篇搞定) 目标:用最少的概念把 FastAPI 的常用能力串起来:路由、参数、数据校验、依赖注入、错误处理、鉴权、数据库、测试、部署与 Docker。看完能直接起一个可用的小服务。 参考文档:FastAPI 官方文档、Starlette、Pydantic、Uvicorn 等(文末…

中小微企业一体化管理系统横向对比:从CRM到生产的全链路能力拆解

在数字化转型浪潮中,“业务孤岛”是中小微企业的核心痛点——CRM的销售数据无法同步到进销存,生产工单与财务核算脱节,薪资计算仍需人工核对销售业绩……一套能覆盖CRM、进销存、薪资、财务、上下游协同、生产工单的一体化系统,成…

K8S中使用 reloader 实现滚动升级

一、Reloader 核心说明(为什么能实现滚动升级) 1. 什么是 Reloader? Reloader 是 K8s 开源工具(https://github.com/stakater/Reloader),核心功能是监听 ConfigMap/Secret 的变更,自动触发使用这…

大模型行业完全指南:从职位细分到产业生态,程序员必学收藏

文章系统梳理了大模型行业的完整产业链,从底层算力到应用落地,详细分析了各环节的核心职位与人才需求,包括算法研发、NLP、系统部署、多模态处理、语音识别及安全治理等方向。深入探讨了六大细分领域:训练研发、基础设施、应用产品…

高通6490另类使用场景

之前和朋友在闲聊的时候,朋友提出用他是否可以做3D游戏引擎的使用,比如用芯片矩阵,或阵列服务器的方式。仔细想想其实是有机会的。有机会基于高通QCS6490芯片平台(假设您指的是Qualcomm QCS6490 SoC,这是一个常见的边缘计算和IoT处理器)组成芯片矩阵来运行Unity 3D引擎。…

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

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

“ThreadLocal是什么?揭秘它的隐藏机制!(Java面试必看)”

文章目录“ThreadLocal是什么?揭秘它的隐藏机制!(Java面试必看)”一、什么是ThreadLocal?二、ThreadLocal的隐藏机制1. 线程的副本管理2. 变量的生命周期3. 实例的共享与隔离三、ThreadLocal的实际应用1. 用户登录态管…

值得收藏:AI产品经理转型大模型完全指南:技能评估、学习路径与实战资源

文章详细介绍了AI产品经理转型做大模型产品经理的完整路径,包括所需素质技能评估(AI技术理解、数据洞察、用户洞察、产品设计能力、团队协作)、大模型知识学习方法(原理、应用、优缺点)、应用场景创造策略(…

大模型风口已至:月薪30K+的AI岗批量诞生!收藏这份学习指南,小白也能快速入门

文章全面对比了AI产品经理与传统产品经理的差异,包括工作重心、技术要求、工作内容等方面,详细分析了AI产品经理所需的技术知识、能力边界和评估模型的方法。同时提供了学习大模型AI的路径和资源,从初阶应用到模型训练再到商业闭环&#xff0…

高通6490之Snapdragon Spaces 集成指南(Unity 版)

Snapdragon Spaces 集成指南(Unity 版) Snapdragon Spaces 是 Qualcomm 推出的 XR(扩展现实)开发平台,支持 AR/VR/MR 应用开发,主要针对 Snapdragon 处理器设备(如 AR 眼镜、头显)。它基于 OpenXR 标准,与 Unity 深度集成,支持手部跟踪、空间锚点、平面检测等功能。…

Thinkphp和Laravel框架的火车票购票系统_33bx0nk0

目录 ThinkPHP与Laravel框架在火车票购票系统中的应用对比技术实现差异性能与扩展性对比 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 ThinkPHP与Laravel框架在火车票购票系统中的应用对比 ThinkPHP和Laravel作为国内外的热门PHP框架&#xf…

【故障排查】WPS/Word粘贴数学公式变图片?竟是格式在“搞鬼”

【故障排查】WPS/Word粘贴数学公式变图片?竟是格式在“搞鬼”踩坑了!复制WPS/Word里的数学公式,粘贴完居然变成图片,根本没法编辑。折腾半天发现,罪魁祸首是文档格式——把doc改成docx就搞定了!问题很简单就…

高通6490之Snapdragon Spaces Unity 手部跟踪详细示例

Snapdragon Spaces Unity 手部跟踪详细示例 Snapdragon Spaces 手部跟踪(Hand Tracking)支持实时跟踪 26 个手关节位置、姿态识别(如捏合 PINCH、抓握 GRAB)和手势交互。核心 API 来自 Qualcomm.Snapdragon.Spaces 命名空间,包括 SpacesHandManager、SpacesHand 和 Space…

AI大模型时代的人才画像:这些岗位核心能力你具备了吗?非常详细收藏我这一篇就够了

自OpenAI发布ChatGPT以来,AI大模型产业在全球范围内迅速崛起,引发了前所未有的关注。2024年,被业内公认为大模型应用的元年,众多大模型科技公司如雨后春笋般涌现,这不仅体现在产业的蓬勃发展上,也在人才需求…

Dayjs常用操作使用

在前端开发中,经常会使用到时间组件,对于时间的处理,可以使用dayjs库,下面将一些dayjs常用的操作进行封装;1、时间对象与YYYYMMDD(年年年年月月日日)的互转时间对象转为“YYYYMMDD”export cons…