Python 中的 Psycopg2 模組介紹


我們知道 Python 是一種程式語言,用於完成資料分析、人工智慧、機器學習等領域的各種任務。顯然,還有許多具有特殊功能的模組可以幫助我們完成工作。

類似地,Python 程式碼可以使用名為“Psycopg2 模組”的模組與 PostgreSQL 資料庫進行互動。它是 Python 的一個流行的 PostgreSQL 資料庫介面卡。此模組為我們提供了一套函式和類,可幫助我們進行資料庫連線、結果處理以及查詢執行。

Python 中 Psycopg2 模組的關鍵特性

  • 資料庫連線:Python 中的 Psycopg2 模組帶有一個“connect()”函式。此函式有助於建立與 PostgreSQL 資料庫的連線。資料庫名稱、使用者名稱、密碼和主機等引數將傳遞給該函式,幫助我們連線到我們選擇的資料庫。

  • 查詢執行:Psycopg2 模組使我們能夠對已連線的 PsycopgSQL 資料庫鍵入 SQL 查詢。“execute()”方法幫助我們執行 SQL 語句,例如 SELECT 用於訪問資料,INSERT、UPDATE 和 DELETE 用於資料操作。

  • 預處理語句:SQL 查詢的最佳化是 Psycopg2 模組的一個非常有用的特性。只需準備一次 SQL 查詢,然後使用不同的引數多次執行它,就能在效能方面帶來很大的改進。

  • 事務管理:Psycopg2 為我們提供了一個函式來幫助管理事務。使用此模組可以更容易地啟動事務、提交事務內的更改以及回滾所有更改。事務透過將多個數據庫操作組合成一個單元來確保資料的完整性和一致性。

  • 錯誤處理:Psycopg2 處理與資料庫相關的錯誤和異常,併為我們提供詳細的錯誤訊息和資訊,這有助於我們除錯資料庫連線或查詢執行的問題。

  • 結果處理:執行查詢後,Psycopg2 模組提供方法來獲取結果集、迭代行和訪問返回的資料。我們可以獲取單個列或將行作為字典訪問,以便更容易地進行資料操作。

  • 資料型別轉換:Psycopg2 會自動將 Python 物件轉換為 PostgreSQL 支援的相應資料型別。轉換也會反過來進行。它支援各種內建 PostgreSQL 資料型別,例如整數、字串、日期、JSON 等。

在 Python 中安裝 Postgre2 模組

在這裡,我們將使用 pip 命令來安裝 Psycopg2 模組。我們必須確保正在使用最新版本的 pip。在終端中,我們必須輸入以下內容

pip install -U pip
pip install psycopg2-binary

這些命令將安裝 Pycopg2 的二進位制版本,不需要任何構建或執行時前提條件。

模組的使用

Psycopg2 模組有很多應用,例如在 Python 程式碼和 PostgreSQL 資料庫之間建立連線。以下程式碼就是這樣做的

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

try:
   conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
   print("Database connected successfully")
except:
   print("Database not connected successfully")

在這裡,我們可以看到資料庫名稱、資料庫使用者、密碼、主機和埠已儲存在不同的變數中。然後,為了使程式碼儘可能健壯,使用了 try 和 except 塊。在 try 塊中,我們使用“connect()”函式將 Python 程式碼連線到 PostgreSQL 資料庫。該函式接收我們儲存在不同變數中的所有內容。

連線到資料庫後,我們當然希望對資料庫做一些有用的事情。我們可以使用 Python 程式碼生成 SQL 查詢!下面的程式碼片段將演示這一點

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("""
CREATE TABLE Employee
(
   ID INT  PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   EMAI TEXT NOT NULL
)
""")
conn.commit()
print("Table Created successfully")

在這裡,我們使用“cursor()”函式建立一個遊標,然後將其儲存在 cur 變數中。然後我們使用多行字串的格式,並鍵入將進入資料庫的 SQL 查詢。然後我們使用 commit() 函式將這些更改應用到資料庫。

也可以將資料插入到現有表中!之前我們建立了表,然後我們將資料輸入到表中。下面的程式碼片段將向我們展示這一點

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("""
   INSERT INTO Employee (ID, NAME, EMAIL) VALUES
   (1, 'Virat Kohli','viratk@gmail.com'),
   (2,' Lionel Messi','leomessi87@gmail.com')
 """)
conn.commit()
conn.close()

在這裡,我們使用 execute() 函式執行 SQL 語句,以將資料插入到現有表中。

除了將資料插入到實際資料庫並在伺服器上顯示它之外,我們還可以顯示 Python 終端中的資料。但首先,我們需要安裝一個模組“mysqlx”。此模組在使用 SQL 資料庫時也很有用。以下是程式碼

示例

from mysqlx import Rows
import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for data in rows:
   print("ID :" + str(data[0]))
   print("NAME :" + data[1])
   print("EMAIL :" + data[2])

print('Data fetched successfully and shown on the terminal!')
conn.close()

在這裡,我們有從“mysqlx”模組獲得的行。然後,透過使用 for 迴圈,我們迭代表的行。透過這種方式,我們從每一行獲得所有資料。

更新於:2023年8月3日

瀏覽量 227 次

啟動您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.