体验GaussDB数据库应用程序Psycopg接口实验【华为云GaussDB:与数据库同行的日子】

举报
gentle_zhou 发表于 2023/12/17 20:57:02 2023/12/17
【摘要】 本文用于体验GaussDB其中的一种:Psycopg接口,并能够掌握使用程序通过支持的接口访问数据库。

实验背景

GaussDB作为华为自主研发的一款企业级分布式关系型数据库,具备PB级海量数据存储能力和企业级高可靠能力,也是国内首款纯软全密态数据库,支持国密算法、透明加密,并提供国内首个双集群强一致方案。

这么优秀的一款数据库服务,了解并熟悉如何使用其常用接口及基本配置操作就显得尤为重要了。

而用于连接数据库的接口,JDBC、ODBC和Psycopg就是其中最为常见的3种。本文用于体验GaussDB其中的一种:Psycopg接口,并能够掌握使用程序通过支持的接口访问数据库。

Psycopg接口

数据库Psycopg接口是一种用于执行SQL语句的Python API,可以为PostgreSQL、GaussDB、MogDB等数据库提供统一访问接口,应用程序可基于它进行数据操作。

它相比于其他接口,有以下优势和劣势。

优势:

  • 完全支持Python DB API 2.0规范,以及安全的多线程支持。
  • 是对libpq的封装,主要使用C语言实现,既高效又安全。
  • 具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。
  • 支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。
  • 兼容Unicode和Python 3。

劣势:

  • 需要安装libpq库,以及编译和安装psycopg2模块,这可能会增加部署的复杂性和成本。
  • 可能不支持一些数据库的特定功能或扩展,例如JSONB、数组、枚举等,需要额外的适配器或转换器。
  • 可能不兼容一些其他的Python框架或工具,例如ORM、SQLAlchemy等,需要进行额外的配置或修改。

介绍完Psycopg接口,接下来就是本文重点:体验GaussDB数据库应用程序Psycopg接口实验了。

环境准备 和 实验配置

具体的步骤和措施,可以查看第一篇《体验GaussDB数据库应用程序JDBC接口实验【华为云GaussDB:与数据库同行的日子】》。

同时,还可以查看另外一篇《体验GaussDB数据库应用程序ODBC接口实验【华为云GaussDB:与数据库同行的日子】》查看ODBC接口的使用体验。

掌握Psycopg的使用

1.加载驱动,连接数据库

在当前路径下,执行以下命令mkdir -p /opt/py/db/basic,创建代码结构目录。

执行以下命令python3 -V,验证python3运行命令是否就绪,回显结果输出如下:
image.png

在根目录中下载编译好的psycopg2压缩包并解压,解压完成后查看:

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-x86_64-Python.tar.gz
ls
tar -zxvf openGauss-3.0.0-CentOS-x86_64-Python.tar.gz
ls

接着将psycopg2拷贝到python安装目录的第三方包文件夹(即site-packages目录)下,并将lib文件夹中的内容移动到/usr/local/lib目录下:

mv psycopg2/ /usr/local/lib/python3.6/site-packages/
mv lib/* /usr/local/lib

使用以下命令:vim ~/.bash_profile打开.bash_profile文件。

然后使用以下命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib将lib目录配置在LD_LIBRARY_PATH环境变量中。

使用以下命令:source ~/.bash_profile使环境变量生效。

执行以下命令,在指定目录创建conn.py文件:

cd /opt/py/db/basic
touch conn.py

然后使用vi命令:vi conn.py,将以下代码内容写入conn.py文件中。输入结束后,使用”:wq”保存退出vim编辑

import psycopg2
conn=psycopg2.connect(database="demo",user="db_dev",password="Huawei123#$",host="192.168.0.72",port=8000)
print("Conn database successfully")

执行以下命令python3 conn.py,运行conn.py脚本。

回显结果信息末尾出现”Conn database successfully”,说明依据当前参数已正常连接数据库。

2、执行SQL语句

在/opt/py/db/basic目录下创建demo.py文件:

cd /opt/py/db/basic
touch demo.py

使用vi命令:vi demo.py,将以下代码添加进demo.py文件中:

import psycopg2
conn=psycopg2.connect(database="demo",user="db_dev",password="Huawei123#$",host="192.168.0.72",port=8000)
#创建指针对象
cur=conn.cursor()
# 创建表
cur.execute("CREATE TABLE employee(id integer,name varchar,sex varchar);")
#插入数据
cur.execute("INSERT INTO employee(id,name,sex) VALUES(%s,%s,%s)",(1,'Steve','M'))
cur.execute("INSERT INTO employee(id,name,sex) VALUES(%s,%s,%s)",(2,'Emma','F'))
cur.execute("INSERT INTO employee(id,name,sex) VALUES(%s,%s,%s)",(3,'Chris','M'))

# 获取结果
cur.execute('SELECT * FROM employee')
results=cur.fetchall()
print (results)

# 关闭连接
conn.commit()
cur.close()
conn.close()

执行以下命令:python3 demo.py,运行demo.py脚本

回显结果输入如下:
image.png

回显信息末尾出现表中的数据,说明依据当前脚本已经执行成功,并将表中的数据取出返回。

征文活动

我正在参加【有奖征文 第28期】华为云GaussDB:与数据库同行的日子!
链接:https://bbs.huaweicloud.com/blogs/415547

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。