2026/2/13 9:33:19
网站建设
项目流程
瑞安商城网站建设,网站备案流程核验单,所有北京网站建设公司,在哪里申请域名Python 操作国产金仓数据库#xff08;KingbaseES#xff09;全流程#xff1a;搭建网页数据管理#xff08;增删改查#xff09;
2026年1月视角#xff1a;KingbaseES#xff08;简称KDB#xff09;是国产数据库的代表作#xff0c;由人大金仓公司开发#xff0c;高…Python 操作国产金仓数据库KingbaseES全流程搭建网页数据管理增删改查2026年1月视角KingbaseES简称KDB是国产数据库的代表作由人大金仓公司开发高度兼容 PostgreSQL语法、协议几乎一致所以我们可以用 Python 的psycopg2库直接操作它无需特殊驱动。这让开发超级简单尤其在国产化需求强的场景如政府、企业。本教程是保姆级针对 Python 中级小白假设你会基础语法从零搭建一个网页数据管理系统用 Flask 框架建一个简单 Web App支持对数据库表的增Insert删Delete改Update查Select。示例表一个“用户表”users字段包括 id、name、age、email。前提准备操作系统Windows/Linux/Mac教程以 Linux/Windows 通用。Python3.8推荐3.12。KingbaseES下载官网最新版V8安装后默认端口5432用户root密码自定义。安装依赖pip install psycopg2-binary flaskpsycopg2-binary 是预编译版避免编译问题。测试环境假设 KDB 已安装并运行数据库名为“testdb”。如果 KDB 未安装官网下载https://www.kingbase.com.cn/安装后用 ksql 命令行创建数据库ksql -U root -h localhost -p 54321 # 默认端口可能为54321视安装配置 CREATE DATABASE testdb;现在开始全流程步骤1Python 连接 KingbaseES 数据库用psycopg2连接因为 KDB 兼容 PostgreSQL。核心代码connect_db.pyimportpsycopg2defconnect_db():try:connpsycopg2.connect(dbnametestdb,# 数据库名userroot,# 用户名passwordyour_password,# 替换成你的密码hostlocalhost,# 本地主机port5432# 默认端口KDB 可能为54321确认后改)print(连接成功)returnconnexceptExceptionase:print(f连接失败{e})returnNone# 测试connconnect_db()ifconn:conn.close()解析 最佳实践参数dbname/user/password/host/port 是核心KDB 默认用户是 sysdba 或 root端口常为54321非标准5432查你的配置文件。错误处理用 try-except 捕获 OperationalError如密码错、端口错。连接池大型项目用psycopg2.pool或 SQLAlchemypip install sqlalchemy但小项目够用。陷阱如果端口不对会报“connection refused”密码错报“password authentication failed”。步骤2创建表 基础 CRUD 操作命令行版先建表然后实现增删改查。直接在 Python 脚本里执行 SQL。完整脚本crud_cli.pyimportpsycopg2defget_conn():returnpsycopg2.connect(dbnametestdb,userroot,passwordyour_password,hostlocalhost,port5432)# 创建表defcreate_table():connget_conn()curconn.cursor()cur.execute( CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER, email VARCHAR(100) UNIQUE ); )conn.commit()cur.close()conn.close()print(表创建成功)# 增插入数据definsert_user(name,age,email):connget_conn()curconn.cursor()cur.execute(INSERT INTO users (name, age, email) VALUES (%s, %s, %s);,(name,age,email))conn.commit()cur.close()conn.close()print(插入成功)# 删根据ID删除defdelete_user(user_id):connget_conn()curconn.cursor()cur.execute(DELETE FROM users WHERE id %s;,(user_id,))conn.commit()cur.close()conn.close()print(删除成功)# 改更新年龄defupdate_user_age(user_id,new_age):connget_conn()curconn.cursor()cur.execute(UPDATE users SET age %s WHERE id %s;,(new_age,user_id))conn.commit()cur.close()conn.close()print(更新成功)# 查查询所有defquery_users():connget_conn()curconn.cursor()cur.execute(SELECT * FROM users;)rowscur.fetchall()cur.close()conn.close()returnrows# 测试create_table()insert_user(张三,28,zsexample.com)insert_user(李四,35,lsexample.com)print(所有用户,query_users())update_user_age(1,30)# 更新ID1的年龄print(更新后,query_users())delete_user(2)# 删除ID2print(删除后,query_users())输出示例表创建成功 插入成功 插入成功 所有用户 [(1, 张三, 28, zsexample.com), (2, 李四, 35, lsexample.com)] 更新成功 更新后 [(1, 张三, 30, zsexample.com), (2, 李四, 35, lsexample.com)] 删除成功 删除后 [(1, 张三, 30, zsexample.com)]解析 最佳实践SQL注入防护永远用%s占位符 元组参数别直接拼接字符串。事务用conn.commit()提交失败时conn.rollback()。游标cur.execute()执行 SQLfetchall()/fetchone()取结果。性能批量插入用executemany()大表加索引CREATE INDEX ON users(email);。KDB特有兼容性高但如果用 KDB 独有函数如 sys_*直接写 SQL 就行。步骤3搭建网页数据管理Flask Web App用 Flask 建一个简单网页支持浏览器增删改查。结构主页显示用户列表 表单添加/编辑/删除。安装pip install flask完整代码app.pyfromflaskimportFlask,render_template,request,redirect,url_forimportpsycopg2 appFlask(__name__)defget_conn():returnpsycopg2.connect(dbnametestdb,userroot,passwordyour_password,hostlocalhost,port5432)# 主页显示所有用户 添加表单app.route(/,methods[GET,POST])defindex():ifrequest.methodPOST:namerequest.form[name]ageint(request.form[age])emailrequest.form[email]connget_conn()curconn.cursor()cur.execute(INSERT INTO users (name, age, email) VALUES (%s, %s, %s);,(name,age,email))conn.commit()cur.close()conn.close()returnredirect(url_for(index))connget_conn()curconn.cursor()cur.execute(SELECT * FROM users;)userscur.fetchall()cur.close()conn.close()returnrender_template(index.html,usersusers)# 删除用户app.route(/delete/int:user_id)defdelete(user_id):connget_conn()curconn.cursor()cur.execute(DELETE FROM users WHERE id %s;,(user_id,))conn.commit()cur.close()conn.close()returnredirect(url_for(index))# 更新用户简单版只更新年龄app.route(/update/int:user_id,methods[GET,POST])defupdate(user_id):ifrequest.methodPOST:new_ageint(request.form[new_age])connget_conn()curconn.cursor()cur.execute(UPDATE users SET age %s WHERE id %s;,(new_age,user_id))conn.commit()cur.close()conn.close()returnredirect(url_for(index))connget_conn()curconn.cursor()cur.execute(SELECT * FROM users WHERE id %s;,(user_id,))usercur.fetchone()cur.close()conn.close()returnrender_template(update.html,useruser)if__name____main__:app.run(debugTrue)HTML模板创建 templates 文件夹放两个文件index.html主页!DOCTYPEhtmlhtmlheadtitle用户管理/title/headbodyh1用户列表/h1tableborder1trthID/thth姓名/thth年龄/thth邮箱/thth操作/th/tr{% for user in users %}trtd{{ user[0] }}/tdtd{{ user[1] }}/tdtd{{ user[2] }}/tdtd{{ user[3] }}/tdtdahref{{ url_for(update, user_iduser[0]) }}编辑/a|ahref{{ url_for(delete, user_iduser[0]) }}onclickreturnconfirm(确定删除);删除/a/td/tr{% endfor %}/tableh2添加用户/h2formmethodPOST姓名:inputtypetextnamenamebr年龄:inputtypenumbernameagebr邮箱:inputtypeemailnameemailbrinputtypesubmitvalue添加/form/body/htmlupdate.html编辑页!DOCTYPEhtmlhtmlheadtitle编辑用户/title/headbodyh1编辑用户 {{ user[1] }}/h1formmethodPOST新年龄:inputtypenumbernamenew_agevalue{{ user[2] }}brinputtypesubmitvalue更新/form/body/html运行python app.py浏览器访问 http://127.0.0.1:5000/。页面效果列表显示所有用户。添加填表单提交。编辑点击编辑跳到更新页只改年龄可扩展其他字段。删除点击删除确认后删。解析 最佳实践Flask基础app.route 定义路由render_template 用 Jinja2 模板。表单处理POST 处理增改GET 显示。安全生产环境用 Flask-WTF CSRF 防攻击用 SQLAlchemy ORM 简化代码pip install flask-sqlalchemy。扩展加分页用 LIMIT OFFSET前端用 Bootstrap 美化部署到云如阿里云用 Gunicorn Nginx。KDB兼容全兼容 PostgreSQL无需改 SQL。性能连接用上下文管理器with conn:大项目用连接池。常见问题 调试连接失败检查端口ksql -? 查看、防火墙、密码KDB 默认加密。SQL错误用print(cur.mogrify(sql, params))调试 SQL。Flask调试debugTrue 模式下看错误栈。国产化如果需纯国产用达梦DM类似但 KDB 最兼容 PG 生态。做完这个你就掌握了 Python KDB 的全栈小项目如果想加登录认证、文件上传或用 Streamlit更简单 UI告诉我我再扩展 你现在卡在哪步可以贴报错我帮 debug。