首页 openGauss数据库之Python驱动快速入门

openGauss数据库之Python驱动快速入门

举报
开通vip

openGauss数据库之Python驱动快速入门     openGauss数据库之Python驱动快速入门                  openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核源自PostgreSQL,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。可是目前针对于openGauss数据库的Python应用程序的开发少之又少,这其中的一个原因在于不知道用什么驱动来连接该数据库,特别是Python应用程序,在此将给大家介绍如何使用Python驱动连接openGauss数据...

openGauss数据库之Python驱动快速入门
     openGauss数据库之Python驱动快速入门                  openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核源自PostgreSQL,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。可是目前针对于openGauss数据库的Python应用程序的开发少之又少,这其中的一个原因在于不知道用什么驱动来连接该数据库,特别是Python应用程序,在此将给大家介绍如何使用Python驱动连接openGauss数据库,同时翻译了psycopg2的文档:psycopg2中文文档,目前仍在维护和调整中,如果有任何建议,欢迎提PR来进行修正。一、数据库部署教程的第一步当然是引导大家部署数据库了,由于openGauss数据库与操作系统有一定的依赖关系,为了屏蔽掉不同操作系统之间部署的区别,我推荐使用Docker来进行部署,部署的脚本如下所示:#1.拉取镜像dockerpullenmotech/opengauss#2.开启openGauss数据库服务dockerrun--nameopengauss\--privileged=true-d\-eGS_USERNAME=gaussdb\-eGS_PASSWORD=Secretpassword@123\-p5432:5432\enmotech/opengauss:latest在以上代码中,默认数据库用户名为gaussdb,数据库密码为Secretpassword@123,开启服务的端口为5432,相信熟悉Docker的同学一眼就能看明白代码的含义。可是在此部署的镜像当中只存在一个默认数据库:gaussdb,如果要添加新的数据库节点的话可以使用以下代码:#1.进入运行的Docker容器dockerexec-itopengauss/bin/bash#2.设置环境变量exportGAUSSHOME=/usr/local/opengaussexportPATH=$GAUSSHOME/bin:$GAUSSHOME:$GAUSSHOME/lib:$PATHexportLD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATHexportDATADIR='/var/lib/opengauss/data'#3.使用gsql登陆openGauss数据库gsql-Ugaussdb-WSecretpassword@123-dpostgres-p5432#4.创建test_db数据库CREATEDATABASEtest_dbWITHENCODING'UTF8'template=template0;#5.重新加载openGauss数据库gs_ctlreload-D$DATADIR以上命令执行完毕之后即可创建对应的数据库。安装教程要想使用Python驱动在openGauss数据库上开发应用,非常简单,只需要安装以下包即可:pipinstallpsycopg2-binary安装步骤只需要一步即可,接下来就可以开始应用程序的开发。SimpleOperationswithopenGauss为了演示与数据库的基本操作,我将从创建会话连接、创建表、插入数据、修改数据、删除数据以及查询数据等六个方面来演示。任何数据库的操作都是需要先创建连接来管理对应的事务,openGauss也不例外:创建会话连接frompsycopg2importconnectdefcreate_conn():"""getconnectionfromenvrionmentvariablebytheconnfactoryReturns:[type]:thepsycopg2'sconnectionobject"""env=os.environparams={'database':env.get('OG_DATABASE','opengauss'),'user':env.get('OG_USER','gaussdb'),'password':env.get('OG_PASSWORD','Secretpassword@123'),'host':env.get('OG_HOST','127.0.0.1'),'port':env.get('OG_PORT',5432)}conn:connection=connect(**params)returnconn以上代码中从环境变量中获取对应配置,从而创建与数据库的会话连接。创建表所有的数据操作都是在表上的操作,所以接下来就是需要创建对应的表:defcreate_table(conn):"""checkandcreatetablebyexampleArgs:table_name(str):thenameofthetablecorsor(type):thecorsortypetogetintooperationwithdb"""sql=f"""SELECTEXISTS(SELECT1FROMpg_tablesWHEREtablename='{table_name}');"""withconn:withconn.cursor()ascursor:cursor.execute(sql)result=cursor.fetchone()ifnotresult[0]:logger.info(f'creatingtable<{table_name}>')sql=f"""CREATETABLE{table_name}(idserialPRIMARYKEY,namevarchar,coursevarchar,gradeinteger);"""result=cursor.execute(sql)conn.commit()以上代码中,首先是检测对应的表是否存在,如果不存在的话,便创建对应的表。插入数据definsert_data(conn)->int:"""insertfakerdataArgs:cnn([type]):theconnectionobjecttothedatabse"""faker=Faker(locale=['zh-cn'])sql=f"insertinto{table_name}(name,course,grade)values(%s,%s,%s)RETURNING*;"withconn:withconn.cursor()ascursor:age=random.randint(20,80)result=cursor.execute(sql,(faker.name(),faker.name(),age))result=cursor.fetchone()logger.info(f'adddata<{result}>tothedatabse')conn.commit()returnresult[0]ifresultelseNone使用SQL语句来插入数据,语法与Mysql等数据库有些不一样,可是大同小异,都是能够看懂。在语句的后面返回当前操作的结果,也就是能够获取插入数据的ID。修改数据defupdate_data(conn,student):"""insertfakerdataArgs:cnn([type]):theconnectionobjecttothedatabse"""faker=Faker(locale=['zh-cn'])sql=f"update{table_name}name=%s,course=%s,grade=%swhereid={student.id};"withconn:withconn.cursor()ascursor:age=random.randint(20,80)result=cursor.execute(sql,(faker.name(),faker.name(),age))result=cursor.fetchone()logger.info(f'updatedata<{result}>tothedatabse')conn.commit()修改数据只需要使用以上代码的SQL语句即可,相信熟悉SQL的同学一眼就能看懂。接下来就是删除数据了:删除数据defdelete_data_by_id(conn,id:int):"""deletedatabyprimarykeyArgs:conn([type]):theconnectionobjectid(int):theprimarykeyofthetable"""sql=f"deletefrom{table_name}whereid=%s;"withconn:withconn.cursor()ascursor:cursor.execute(sql,(id,))logger.info(f'deletedatafromdatabsebyid<{id}>')获取数据defget_data_by_id(conn,id:int):"""fetchdatabyidArgs:conn([type]):theconnectionobjectid(int):theprimarykeyofthetableReturns:[type]:thetupledataofthetable"""sql=f"select*from{table_name}whereid=%s;"withconn:withconn.cursor()ascursor:cursor.execute(sql,(id,))result=cursor.fetchone()logger.info(f'selectdata<{result}>fromdatabse')returnresult在以上代码中,通过SELECT语句筛选出对应的数据,这个接口是非常简单且通用的。在以上代码中有一个规律,所有的操作都是需要在Cursor上进行操作,这是因为每一个原子事务的控制都是基于cursor对象,这样通过细粒度的控制能够很好的调度应用程序中所有的数据库交互操作。在以上代码中,展示了最简单的数据连接与数据库查询,使用方法非常简单,并符合DBAPIv2的 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ,从而让很多上有工具原生支持openGauss的操作,比如可直接在SqlalchemyORM工具中连接openGauss数据库,这是一个非常重要的特性。此处只是一个非常简单的数据库连接示例,后续将持续发布一些深入的使用openGaussPython数据库驱动的案例,录制了一个线上视频提供参考:BiliBili-openGauss使用之python驱动 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf openGauss数据库是一个可处理高并发的高性能数据库,基于PostgreSql生态可轻松实现Python驱动应用程序的开发。 -全文完-
本文档为【openGauss数据库之Python驱动快速入门】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
资教之佳
暂无简介~
格式:doc
大小:34KB
软件:Word
页数:11
分类:互联网
上传时间:2023-06-22
浏览量:4