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