亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

教你使用Psycopg2連接openGauss的方法

 更新時間:2022年11月30日 14:24:32   作者:Gauss松鼠會  
Psycopg是一種用于執(zhí)行SQL語句的PythonAPI,可以為PostgreSQL、openGauss數(shù)據(jù)庫提供統(tǒng)一訪問接口,應(yīng)用程序可基于它進(jìn)行數(shù)據(jù)操作,這篇文章主要介紹了教你使用Psycopg2連接openGauss的方法,需要的朋友可以參考下

1.簡介

Psycopg是一種用于執(zhí)行SQL語句的PythonAPI,可以為PostgreSQL、openGauss數(shù)據(jù)庫提供統(tǒng)一訪問接口,應(yīng)用程序可基于它進(jìn)行數(shù)據(jù)操作。Psycopg2是對libpq的封裝,主要使用C語言實現(xiàn),既高效又安全。它具有客戶端游標(biāo)和服務(wù)器端游標(biāo)、異步通信和通知、支持“COPY TO/COPY FROM”功能。支持多種類型Python開箱即用,適配PostgreSQL數(shù)據(jù)類型;通過靈活的對象適配系統(tǒng),可以擴(kuò)展和定制適配。Psycopg2兼容Unicode和Python 3。
openGauss數(shù)據(jù)庫提供了對Psycopg2特性的支持,并且支持Psycopg2通過SSL模式鏈接。

2.接口介紹

開發(fā)流程

接口說明

openGauss提供了如下接口供開發(fā)者使用:

  • psycopg2.connect()

此方法創(chuàng)建新的數(shù)據(jù)庫會話并返回新的connection對象(連接openGauss數(shù)據(jù)庫實例的對象)。

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”)

創(chuàng)建連接對象(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沒有填寫,默認(rèn)取當(dāng)前用戶.postgresql目錄下對應(yīng)的client.crt, client.key, root.crt

  • connection.cursor()

此方法用于返回新的cursor對象(用于整個數(shù)據(jù)庫使用Python編程的cursor)。

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

  • cursor.execute(query,vars_list)

此方法執(zhí)行被參數(shù)化的SQL語句(即占位符,而不是SQL文字)。psycopg2模塊支持用%s標(biāo)志的占位符。

curosr.execute(query,vars_list)

  • curosr.executemany(query,vars_list)

此方法執(zhí)行SQL命令所有參數(shù)序列或序列中的SQL映射。

curosr.executemany(query,vars_list)

  • connection.commit()

此方法將當(dāng)前掛起的事務(wù)提交到數(shù)據(jù)庫。默認(rèn)情況下,Psycopg在執(zhí)行第一個命令之前打開一個事務(wù):如果不調(diào)用commit(),任何數(shù)據(jù)操作的效果都將丟失。

connection.commit()

  • connection.rollback()

此方法回滾當(dāng)前掛起事務(wù)。執(zhí)行關(guān)閉連接“close()”而不先提交更改“commit()”將導(dǎo)致執(zhí)行隱式回滾。

connection.rollback()

  • cursor.fetchone()

此方法提取查詢結(jié)果集的下一行,并返回一個元組。返回單個元組,為結(jié)果集的第一條結(jié)果,當(dāng)沒有更多數(shù)據(jù)可用時,返回為“None”。

cursor.fetchone()

  • cursor.fetchall()

此方法獲取查詢結(jié)果的所有(剩余)行,并將它們作為元組列表返回。返回元組列表,為結(jié)果集的所有結(jié)果??招袝r則返回空列表。

cursor.fetchall()

  • cursor.close()

此方法關(guān)閉當(dāng)前連接的游標(biāo)。

cursor.close()

  • connection.close()

此方法關(guān)閉數(shù)據(jù)庫連接。此方法關(guān)閉數(shù)據(jù)庫連接,并不自動調(diào)用commit()。如果只是關(guān)閉數(shù)據(jù)庫連接而不調(diào)用commit()方法,那么所有更改將會丟失。

connection.close()

3.使用

3.1環(huán)境準(zhǔn)備

本篇使用環(huán)境信息:

  • 華為云HECS 2核4G
  • CentOS Linux release 7.6
  • Python 3.6.8
  • openGauss 3.1.0 極簡版

3.2下載并加載python驅(qū)動

1、可以在openGauss官網(wǎng)下載后用FTP工具比如winscp等上傳到服務(wù)器,也可以直接在服務(wù)器上用wget方式獲取,根據(jù)操作系統(tǒng)版本下載對應(yīng)的驅(qū)動。

root用戶下新建存放目錄,執(zhí)行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,分別放置對應(yīng)的庫文件。
2、在解壓后的路徑下執(zhí)行拷貝命令,將驅(qū)動拷貝到python3下的site-packages目錄

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

3、修改psycopg2/目錄權(quán)限為755

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

4、對于非數(shù)據(jù)庫用戶,需要將解壓后的lib目錄,配置在LD_LIBRARY_PATH中。

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

3.3創(chuàng)建數(shù)據(jù)庫連接用戶

注意,由于psycopg2只能使用MD5方式連接,而openGauss默認(rèn)安裝時使用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創(chuàng)建用戶和數(shù)據(jù)庫。

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

如果在修改加密方式前之前已經(jīng)創(chuàng)建過用戶了,需要在配置文件修改及數(shù)據(jù)庫重啟完成后,重新建用戶或者設(shè)置用戶密碼。

3.4示例

編寫python文件

vi ogconn.py

將如下測試語句拷貝進(jìn)去,根據(jù)實際情況修改對應(yīng)的openGauss數(shù)據(jù)庫連接信息。

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

解決辦法:
根據(jù)提示升級版本

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

yum install postgresql10-devel

根據(jù)提示輸入y,等提示Complete!
重新測試連接

注意,如果使用本地工具連接遠(yuǎn)端云服務(wù)器的數(shù)據(jù)庫時,需要修改云服務(wù)器安全組,將openGauss的端口放開,否則會連接不上。

4.常見報錯

執(zhí)行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版本應(yīng)該在10以上,需要升級下版本。
解決辦法:

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

根據(jù)提示輸入y,等提示Complete!

2.提示如下錯誤:
psycopg2.OperationalError: none of the server’s SASL authentication mechanisms are supported
這個就是加密方式的問題,參考文章中“創(chuàng)建數(shù)據(jù)庫連接用戶”部分解決。

到此這篇關(guān)于教你使用Psycopg2連接openGauss的方法的文章就介紹到這了,更多相關(guān)Psycopg2連接openGauss內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3實現(xiàn)小球轉(zhuǎn)動抽獎小游戲

    python3實現(xiàn)小球轉(zhuǎn)動抽獎小游戲

    這篇文章主要為大家詳細(xì)介紹了python3實現(xiàn)小球轉(zhuǎn)動抽獎小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • jupyter notebook遠(yuǎn)程訪問不了的問題解決方法

    jupyter notebook遠(yuǎn)程訪問不了的問題解決方法

    這篇文章主要介紹了jupyter notebook遠(yuǎn)程訪問不了的問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • scrapy-redis分布式爬蟲的搭建過程(理論篇)

    scrapy-redis分布式爬蟲的搭建過程(理論篇)

    這篇文章主要介紹了scrapy-redis分布式爬蟲的搭建過程(理論篇),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 如何將Python編譯成C語言

    如何將Python編譯成C語言

    這篇文章主要介紹了如何將Python編譯成C語言,我們都知道python比c慢,下面小編就來個大家分享如何將Python編譯成C語言,需要的小伙伴可以參考一下
    2022-01-01
  • Python常用模塊sys,os,time,random功能與用法實例分析

    Python常用模塊sys,os,time,random功能與用法實例分析

    這篇文章主要介紹了Python常用模塊sys,os,time,random功能與用法,結(jié)合實例形式分析了Python模塊sys,os,time,random功能、原理、相關(guān)模塊函數(shù)、使用技巧與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例

    vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例

    本文主要介紹了vscode搭建python Django網(wǎng)站開發(fā)環(huán)境的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 基于OpenCV的仿射變換實現(xiàn)方法

    基于OpenCV的仿射變換實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于基于OpenCV的仿射變換實現(xiàn)方法,仿射變換相當(dāng)于將二維平面上的每個坐標(biāo)點與一個2x3的矩陣相乘,得到新的坐標(biāo),而透視變換則是與3x3的矩陣相乘,需要的朋友可以參考下
    2024-01-01
  • python commands模塊的適用方式

    python commands模塊的適用方式

    這篇文章主要介紹了python commands模塊的適用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • django模型中的字段和model名顯示為中文小技巧分享

    django模型中的字段和model名顯示為中文小技巧分享

    這里給大家分享2個可以讓django模型中的字段和model名顯示為中文的小技巧,非常的簡單實用,給需要的小伙伴參考下。
    2014-11-11
  • Python時間模塊datetime、time、calendar的使用方法

    Python時間模塊datetime、time、calendar的使用方法

    這篇文章主要介紹了Python時間模塊的使用方法,主要包括三大模塊datetime、time、calendar,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評論