使用Psycopg2连接openGauss

news/2024/5/2 21:59:35/文章来源:https://blog.csdn.net/GaussDB/article/details/128091194

文章目录

  • 1.简介
  • 2.接口介绍
    • 开发流程
    • 接口说明
  • 3.使用
    • 3.1环境准备
    • 3.2下载并加载python驱动
    • 3.3创建数据库连接用户
    • 3.4示例
  • 4.常见报错

1.简介

Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、openGauss数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。
openGauss数据库提供了对Psycopg2特性的支持,并且支持Psycopg2通过SSL模式链接。

2.接口介绍

开发流程

在这里插入图片描述

接口说明

openGauss提供了如下接口供开发者使用:

  • psycopg2.connect()
    此方法创建新的数据库会话并返回新的connection对象(连接openGauss数据库实例的对象)。

conn=psycopg2.connect(dbname=“test”,user=“postgres”,password=“secret”,host=“127.0.0.1”,port=“5432”)

或者

conn = psycopg2.connect(“dbname=test user=postgres password=secret
host=127.0.0.1 port=5432”)

创建连接对象(SSl连接)

conn = psycopg2.connect(dbname=“postgres”, user=“user”, password=“password”, host=“localhost”, port=port, sslmode=“verify-ca”, sslcert=“client.crt”, sslkey=“client.key”, sslrootcert=“cacert.pem”)

注意: 如果sslcert, sslkey,sslrootcert没有填写,默认取当前用户.postgresql目录下对应的client.crt, client.key, root.crt

  • connection.cursor()
    此方法用于返回新的cursor对象(用于整个数据库使用Python编程的cursor)。

cursor(name=None, cursor_factory=None, scrollable=None,
withhold=False)

  • cursor.execute(query,vars_list)
    此方法执行被参数化的SQL语句(即占位符,而不是SQL文字)。psycopg2模块支持用%s标志的占位符。

curosr.execute(query,vars_list)

  • curosr.executemany(query,vars_list)
    此方法执行SQL命令所有参数序列或序列中的SQL映射。

curosr.executemany(query,vars_list)

  • connection.commit()
    此方法将当前挂起的事务提交到数据库。默认情况下,Psycopg在执行第一个命令之前打开一个事务:如果不调用commit(),任何数据操作的效果都将丢失。

connection.commit()

  • connection.rollback()
    此方法回滚当前挂起事务。执行关闭连接“close()”而不先提交更改“commit()”将导致执行隐式回滚。

connection.rollback()

  • cursor.fetchone()
    此方法提取查询结果集的下一行,并返回一个元组。返回单个元组,为结果集的第一条结果,当没有更多数据可用时,返回为“None”。

cursor.fetchone()

  • cursor.fetchall()
    此方法获取查询结果的所有(剩余)行,并将它们作为元组列表返回。返回元组列表,为结果集的所有结果。空行时则返回空列表。

cursor.fetchall()

  • cursor.close()
    此方法关闭当前连接的游标。

cursor.close()

  • connection.close()
    此方法关闭数据库连接。此方法关闭数据库连接,并不自动调用commit()。如果只是关闭数据库连接而不调用commit()方法,那么所有更改将会丢失。

connection.close()

3.使用

3.1环境准备

本篇使用环境信息:

  • 华为云HECS 2核4G
  • CentOS Linux release 7.6
  • Python 3.6.8
  • openGauss 3.1.0 极简版

3.2下载并加载python驱动

1、可以在openGauss官网下载后用FTP工具比如winscp等上传到服务器,也可以直接在服务器上用wget方式获取,根据操作系统版本下载对应的驱动。
在这里插入图片描述

root用户下新建存放目录,执行wget和解压命令。

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

在这里插入图片描述

解压后有两个文件夹 lib和psycopg2,分别放置对应的库文件。
2、在解压后的路径下执行拷贝命令,将驱动拷贝到python3下的site-packages目录

cp -r psycopg2/ /usr/lib/python3.6/site-packages/

3、修改psycopg2/目录权限为755

cd /usr/lib/python3.6/site-packages/    
chmod 755 psycopg2/

4、对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH中。

export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/psycopg2/lib/
ldconfig

3.3创建数据库连接用户

注意,由于psycopg2只能使用MD5方式连接,而openGauss默认安装时使用sha256加密,所以这里需要修改一下配置。
修改 data/single_node/postgresql.conf 中password_encryption_type = 1 ,表示支持md5和sha256。
修改pg_hba.conf 中加密算法
在这里插入图片描述

然后重启openGauss:gs_ctl restart -D /opt/software/openGauss/data/single_node
连接到openGauss创建用户和数据库。

create database mydb;
CREATE USER tuser WITH PASSWORD '自己定义';
GRANT ALL PRIVILEGES TO tuser;
alter database mydb owner to tuser;

如果在修改加密方式前之前已经创建过用户了,需要在配置文件修改及数据库重启完成后,重新建用户或者设置用户密码。

3.4示例

编写python文件

vi ogconn.py

将如下测试语句拷贝进去,根据实际情况修改对应的openGauss数据库连接信息。

import psycopg2
conn=psycopg2.connect(database="mydb",user="tuser",password="XXXXXXX",host="127.0.0.1",port=5432)
#或者用下面的也可以
#conn = psycopg2.connect("dbname=mydb user=tuser password=password host=localhost port=port")
print("Conn openGauss successfully")
cur=conn.cursor()
cur.execute("DROP TABLE IF EXISTS student")
cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Bob','M'))
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Kevin','M'))
cur.execute('SELECT id,name,sex FROM student')
results=cur.fetchall()
print (results)
conn.commit()
cur.close()
conn.close()

连接测试

python3 ogconn.py

报错了,psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above

解决办法:
根据提示升级版本

rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyum install postgresql10-devel

根据提示输入y,等提示Complete!
重新测试连接
在这里插入图片描述

注意,如果使用本地工具连接远端云服务器的数据库时,需要修改云服务器安全组,将openGauss的端口放开,否则会连接不上。

4.常见报错

执行python3 ogconn.py报错
1.提示如下错误
File “/opt/software/psycopg2/psycopg2/init.py”, line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above

这个错是说libpq版本应该在10以上,需要升级下版本。
解决办法:

rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyum install postgresql10-devel

根据提示输入y,等提示Complete!

2.提示如下错误:
psycopg2.OperationalError: none of the server’s SASL authentication mechanisms are supported
这个就是加密方式的问题,参考文章中“创建数据库连接用户”部分解决。

欢迎大家测试、交流!

🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

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

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

相关文章

嘉创房地产冲刺港交所:半年营收4.7亿 现金及现金等价物减少

雷递网 雷建平 11月28日嘉创房地产控股有限公司(简称:“嘉创”)日前递交招股书,准备在港交所上市。半年营收4.73亿嘉创为一家精品住宅物业发展商,主要在大湾区的东莞、惠州及佛山迅速发展的住宅市场(如东莞…

干货 | 数字经济创新创业——如何发展绿色经济

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”(数字经济创新创业课程)的精彩内容。主讲嘉宾:Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

下沉市场投资热度提升 7天酒店打造酒店投资“极致性价比”

近日,7天酒店 “总裁面对面”酒店投资云沙龙活动举办,通过微信、抖音双平台联合直播,多维度探讨酒店行业的“新蓝海”机遇以及下沉市场的投资模式,助力更多投资人把握新的市场红利。 经济型酒店拥抱“新蓝海” 下沉市场投资热度提…

Antd中Table列表行默认包含修改及删除功能的封装

一、前言 ant-design是非常不错、方便的一款前端组件库,而这次用到的ProComponents则是在 Ant Design 上进行了自己的封装,更加易用,与 Ant Design 设计体系一脉相承,无缝对接 antd 项目,样式风格与 antd 一脉相承&am…

SAP 财务月结之 外币评估(TCODE:FAGL_FC_VAL,S4版本用 FAGL_FCV)<转载>

原文链接:https://zhuanlan.zhihu.com/p/367876296 在会计期末,企业往往会有以外币记的余额,如应付账款(国外)、应收账款(国外),或外币存款。而企业出具的财务报表,货币必…

学习笔记11月27日

Infant Brain Deformable Registration Using Global and Local Label-Driven Deep Regression Learning 文章来源:谷歌学术 一、摘要 婴儿大脑磁共振(MR)图像的可变形配准具有挑战性,因为:(1)这些纵向图像存在较大的…

RK3588平台开发系列讲解(USB篇)USB 外设 CONFIG

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、 Mass Storage Class CONFIG二、USB Serial Converter CONFIG三、USB HID CONFIG四、USB Net CONFIG五、USB Camera CONFIG六、USB Audio CONFIG七、 USB HUB CONFIG沉淀、分享、成长,让自己和他人都能有所收获!…

Java并发-多线程售票案例

1. 前言 本节内容主要是使用 Java 的使用 Condition 和 Lock 机制对多线程售票案例进行实现。售票案例多数情况下主要关注多线程如何安全的减少库存,也就是剩余的票数,当票数为 0 时,停止减少库存。 2. 售票机制模型 如下图所示&#xff0…

ANR系列之ContentProvider类型原理讲解

前言: 众所周知,ANR一共有四种类型,如下: 1.输入事件类型ANR 2.广播类型ANR 3.ContentProvider类型ANR 4.Service类型ANR 四种类型的超时时间如下所示: 所以ANR系列文章也会分为5篇文章来进行讲解,本…

管理最忌讳用权管人

阅读本文大概需要 1.66 分钟。最近星球在更新一些系列课程,其中有一节课叫「怎样从技术人转型管理者?」应该很适合大多读者,毕竟关注我的读者里,做技术做管理的居多,所以这篇也发这里给大家分享下。程序员做技术的&…

WebView2 通过 PuppeteerSharp 实现爬取 王者 壁纸 (案例版)

王者壁纸自动化获取逻辑分析 其实它的逻辑很简单, 就是王者的官网,打开后,在右下角就看到了皮肤页面部分。 这个时候,点击更多,就会打开全部英雄详情的页面。 这个时候,单点任意一个英雄,就会…

Rust机器学习之Linfa

Rust机器学习之Linfa 众所周知,Python之所以能成为机器学习的首选语言,与其丰富易用的库有很大关系。某种程度上可以说是诸如numpy、pandas、scikit-learn、matplotlib、pytorch、networks…等一系列科学计算和机器学习库成就了Python今天编程语言霸主的…

DDOS防护如何建设?

数字化转型发展也推动了云计算、人工智能、大数据、物联网等新一代信息技术应用普及,与此同时,新时代的发展也带来了新的网络威胁和新的安全需求。我们不难发现,近年网络攻击时间层出不穷,全球范围来看,企业因遭受网络…

CrossOver软件2022可以使苹果MAC电脑运行Windows软件应用

面对安装双系统时的繁琐步骤,以及虚拟机软件那庞大的体积,CrossOver的出现,让一切都变得简单起来。 CrossOver自带的一系列的Windows应用,涵盖游戏软件、办公软件、设计软件等多个种类。它轻巧的体积,便捷的操作步骤无…

国鸿氢能冲刺港股:年亏损7亿 云浮工业园与青岛城投是股东

雷递网 雷建平 11月28日国鸿氢能科技(嘉兴)股份有限公司(简称:“国鸿氢能”)日前递交招股书,准备在港交所上市。年亏损7亿国鸿氢能成立于2015年6月,是一家以氢燃料电池为核心产品的企业&#x…

字符串压缩(二)之LZ4

一、LZ4压缩与解压 LZ4有两个压缩函数。默认压缩函数原型: int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); 快速压缩函数原型: int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapaci…

如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

全文下载链接:http://tecdat.cn/?p24647线性混合模型假设 N 个受试者的群体是同质的,并且在群体水平上由独特的曲线 Xi(t)β 描述(点击文末“阅读原文”获取完整代码数据)。相关视频背景和定义相比之下,潜在类别混合模…

【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图+源码+仿真工程+论文+答辩PPT)

【毕业设计】24-基于单片机的电子显示屏的设计与应用(原理图源码仿真工程论文答辩PPT) 文章目录任务书设计说明书摘要设计框架架构设计说明书及设计文件源码展示任务书 主要研究内容: 通过查阅资料,掌握单片机基本工作原理&#…

【STM32备忘录】二、FSMC做LCD控制器,使用stm32cube配置示例

文章目录1. FSMC框图2. 配置示例(1) cube配置(2) 代码参考*疑问1. FSMC框图 如果屏幕接口8位数据宽度访问,地址线FSMC_A[25:0], 一共26位,一个块22667108864Byte64MB,如果屏幕接口16位数据宽度访问,地址线FSMC_A[25:0], 一共26位&…

鸿蒙全量源代码在线阅读

目录 前言 下载方式复杂 占用空间大 搜索效率低 本项目目标 服务器地址 使用手册 源码浏览服务 标识符搜索 普通文本搜索 代码比较 写在最后 前言 当前,OpenHarmony项目持续发展,其代码量已经超过了20G字节的存储占用空间,对于一…