windows環境下python連接openGauss數據庫

語言: CN / TW / HK

 

文章目錄

  • 一、python 介紹
  • 二、Python下載及安裝
  • 三、openGauss Connectors (Psycopg2) 介紹
  • 四、openGauss Connectors (Psycopg2)下載並初始化
  • 五、連接並訪問openGauss數據庫
  • 六、問題總結(FAQ)

 

一、python 介紹

python最新版
windows python是款面向對象、直譯式計算機程序設計語言,同時也是一種功能強大而完善的通用型語言,具有非常簡潔而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統中運行。

Python特殊功能

  • 很清楚、明確、易讀的語法
  • 較強的自省能力
  • 直觀的面向對象
  • 自然的表達程序代碼
  • 完整的模塊化設計,支持分層包
  • 基於異常的錯誤處理
  • 非常高的水平動態數據類型
  • 幾乎每一個任務的廣泛的標準庫和第三方模塊
  • 擴展和模塊很容易寫在C,C + +(或Java的Jython或NET語言IronPython的)
  • 嵌入在應用程序中作為腳本接口

Python 軟件亮點

  • 完全模塊化,Python核心編程軟件支持分層包
  • 基於異常的錯誤處理
  • 非常高級別的動態數據類型
  • 廣泛的標準庫和第三方模塊,Python核心編程軟件幾乎被用於每個任務
  • 擴展和模塊易於使用C,C ++(或Jython Java,或IronPython的.NET語言)
  • 可嵌入應用程序作為腳本界面

Python説明
Python是一個解釋性語言,因為不需要編譯和連接所以能節省大量的程序開發時間。解釋程序可以交互使用,這樣可以可以很容易地試驗語言的各種特色,寫只用一次的程序,或在從底向上程序開發中測試函數。它也是一個方便的計算器。

Python是一種面向對象、直譯式計算機程序設計語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統中運行。目前,基於這種語言的相關技術正在飛速的發展,用户數量急劇擴大,相關的資源非常多。

Python可用於的操作系統:Windows和Linux / Unix系統,OS / 2,Mac上,Amiga上,其中包括。甚至有NET和Java虛擬機上運行,Python的實現是一個開源許可證,使得它可以自由使用和分派下,甚至用於商業用途。

二、Python下載及安裝

1、下載: 進入python官網下載(https://www.python.org/)。鼠標指向Downloads(不用點擊)會彈出下拉框,直接點擊windows下的Python 3.11.0即可下載。(國外網站下載較慢,建議找個國內的資源下載)

在這裏插入圖片描述

2、下載好之後,右鍵以管理員身份運行exe可執行文件。

這裏勾選Add Python 3.11 to PATH (把Python的安裝路徑添加到系統環境 變量的Path變量中,如果不選那就需要自己配置環境變量了,參見FAQ) ,Install Now 默認安裝,Customize installation 自定義安裝。
在這裏插入圖片描述

這裏選自定義安裝,安裝Python文檔、Python的pip等…默認即可,直接next
在這裏插入圖片描述

路徑可以更改一下:
在這裏插入圖片描述

自動安裝中……
在這裏插入圖片描述

最後點這裏(紅圈處)。
在這裏插入圖片描述

安裝完成。
在這裏插入圖片描述

打開(cmd)終端窗口,輸入python命令,進行驗證,看到相關版本信息,即表示安裝成功。
在這裏插入圖片描述

打開(cmd)終端窗口,輸入pip 命令,驗證環境變量是否配置成功。
在這裏插入圖片描述

下載並安裝模塊:打開cmd窗口,鍵入命令 pip install requests 進行安裝,使用pip list命令查看是否已經安裝模塊。
在這裏插入圖片描述

三、openGauss Connectors (Psycopg2) 介紹

Psycopg是一種用於執行SQL語句的PythonAPI,可以為PostgreSQL、openGauss數據庫提供統一訪問接口,應用程序可基於它進行數據操作。Psycopg2是對libpq的封裝,主要使用C語言實現,既高效又安全。它具有客户端遊標和服務器端遊標、異步通信和通知、支持“COPY TO/COPY FROM”功能。支持多種類型Python開箱即用,適配PostgreSQL數據類型;通過靈活的對象適配系統,可以擴展和定製適配。Psycopg2兼容Unicode和Python 3。

openGauss數據庫提供了對Psycopg2特性的支持,並且支持Psycopg2通過SSL模式鏈接。

四、openGauss Connectors (Psycopg2)下載並初始化

登錄openGauss社區(https://opengauss.org/zh/download/)下載對應的openGauss數據庫連接器(本測試環境下載的是Python-psycopg2_2.1.0,版本與數據版本匹配)。
在這裏插入圖片描述

從發佈包中獲取,包名為openGauss-xxxx-操作系統版本號-64bit-Python.tar.gz。解壓後有兩個文件夾:psycopg2庫文件和lib庫文件。
在這裏插入圖片描述

將psycopg2拷貝到python安裝目錄的第三方包文件夾(即site-packages目錄)下。
在這裏插入圖片描述

將lib文件夾中的文件拷貝到安裝目錄Lib目錄下。
在這裏插入圖片描述

對於非數據庫用户,需要將解壓後的lib目錄,配置在LD_LIBRARY_PATH環境變量中(參考FAQ)。
在這裏插入圖片描述

下載並安裝模塊:打開cmd窗口,鍵入命令pip install psycopg2
在這裏插入圖片描述

五、連接並訪問openGauss數據庫

前置條件:openGauss數據庫已成功安裝、併成功啟動。
在這裏插入圖片描述

編輯好python文件,並保存。(本測試腳本功能主要實現鏈接openGauss數據庫、創建表、插入數據、查詢數據等)
在這裏插入圖片描述

附原腳本:

#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="postgres", user="omm2", password="P@ssw0rd123", host="192.168.52.3", port="26000")

cur = conn.cursor()

#創建表COMPANY1
cur.execute('''CREATE TABLE COMPANY1 (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''')
       
#插入數據 
cur.execute("INSERT INTO COMPANY1 (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY1 (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY1 (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY1 (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");       
      
#查詢結果
cur.execute("SELECT id, name, address, salary from COMPANY1")
rows = cur.fetchall()
for row in rows:
   print("ID = ", row[0])
   print("NAME = ", row[1])
   print("ADDRESS = ", row[2])
   print("SALARY = ", row[3])

conn.commit()
conn.close()

執行python腳本:打開(cmd)終端窗口, 執行命令“python new2.py”,如下截圖。
在這裏插入圖片描述

如上出現以上結果, 則表示python鏈接openGauss數據庫成功,執行創建表、插入數據、查詢數據成功。

六、問題總結(FAQ)

1、python 環境變量配置參考:
在這裏插入圖片描述

2、打開(cmd)終端窗口,輸入pip,遇到:‘pip’不是內部或外部命令,也不是可運行的程序或批處理文件。即下圖這種情況:
在這裏插入圖片描述

解決辦法:添加環境變量。複製python安裝目錄 Scripts的路勁, 調價到 Path下(參考上文python安裝時配置環境變量的圖示)。

3、在執行python腳本時,如果報錯:ModuleNotFoundError:No module named ‘psycopg2._psycopg’。 則需要執行pip install psycopg2 命令, 下載安裝模塊。

4、在鏈接openGauss數據庫時,提示:Forbid remote connection with initial user ,意思是禁止用初始用户進行遠程連接,即不要使用數據庫默認的omm用户訪問。

5、Psycopg(接口)參考
Psycopg接口是一套提供給用户的API方法。

1)psycopg2.connect() :此方法創建新的數據庫會話並返回新的connection對象。
原型:
conn=psycopg2.connect(dbname=“test”,user=“postgres”,password=“secret”,host=“127.0.0.1”,port=“5432”)

返回值:connection對象(連接openGauss數據庫實例的對象)。
參數 :
關鍵字 參數説明
dbname 數據庫名稱。
user 用户名。
password 密碼。
host 數據庫IP地址,默認為UNIX socket類型。
port 連接端口號,默認為5432。
sslmode ssl模式,ssl連接時用。
sslcert 客户端證書路徑,ssl連接時用。
sslkey 客户端密鑰路徑,ssl連接時用。
sslrootcert 根證書路徑,ssl連接時用。

2)connection.cursor():此方法用於返回新的cursor對象。
原型:
cursor(name=None, cursor_factory=None, scrollable=None, withhold=False)

返回值 :cursor對象(用於整個數據庫使用Python編程的cursor)。
參數 :
關鍵字 參數説明
name cursor名稱,默認為None。
cursor_factory 用於創造非標準cursor,默認為None。
scrollable 設置SCROLL選項,默認為None。
withhold 設置HOLD選項,默認為False。

3)cursor.execute(query,vars_list) :此方法執行被參數化的SQL語句(即佔位符,而不是SQL文字)。psycopg2模塊支持用%s標誌的佔位符。

原型
curosr.execute(query,vars_list)

參數:
關鍵字 參數説明
query 待執行的sql語句。
vars_list 變量列表,匹配query中%s佔位符。

4)cursor.fetchall():此方法獲取查詢結果的所有(剩餘)行,並將它們作為元組列表返回。
原型:
cursor.fetchall()

5)connection.commit():此方法將當前掛起的事務提交到數據庫。注意: 默認情況下,Psycopg在執行第一個命令之前打開一個事務:如果不調用commit(),任何數據操作的效果都將丟失。
原型:
connection.commit()

6)connection.close():此方法關閉數據庫連接。注意: 此方法關閉數據庫連接,並不自動調用commit()。如果只是關閉數據庫連接而不調用commit()方法,那麼所有更改將會丟失。
原型:
connection.close()