跳過到頁腳內容
PYTHON 幫助

psycopg2(開發人員工作原理)

這個psycopg2庫是一個受歡迎的PostgreSQL數據庫適配器,用於Python編程語言。 它以其高效性、線程安全性以及完整執行Python DB API 2.0規範而聞名。 讓我們探索它的功能,並看看一些代碼示例。 Later in this article, we will learn about IronPDF, a PDF generation library from Iron Software.

Psycopg2被設計成高效且安全,使其適合於大量多線程應用程序。 它的一些主要功能包括:

  • 線程安全性:多個線程可以共享同一個連接——能夠處理創建和銷毀大量游標的多線程應用程序。
  • 客戶端和服務器端游標:高效處理大型數據集。
  • 異步通信和通知:支持異步操作。
  • COPY支持:使用COPY TO和COPY FROM高效批量加載數據。
  • 適配系統:自動將Python類型適配為PostgreSQL類型;此包自動轉換為匹配的Postgresql數據類型。
  • Unicode和Python 3友好:完全支持Unicode和Python 3。

安裝

您可以使用pip安裝psycopg2

pip install psycopg2
pip install psycopg2
SHELL

或者,您可以從本地的源包中使用setup.py。 您可以從這裡的源代碼庫獲取源包:

python setup.py build
sudo python setup.py install
python setup.py build
sudo python setup.py install
SHELL

對於不需要編譯器或外部庫的獨立包,您可以使用psycopg2-binary包:

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

基本用法

這是一個簡單的示例來幫助您開始使用psycopg2。

連接到數據庫

首先,您需要連接到您的PostgreSQL數據庫:

import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
PYTHON

執行查詢

您可以使用游標對象執行SQL查詢:

# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
PYTHON

插入數據

這是如何將數據插入到表中的方法:

# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
PYTHON

關閉連接

完成後,不要忘記關閉游標和連接:

# Close the cursor and connection
cur.close()
conn.close()
# Close the cursor and connection
cur.close()
conn.close()
PYTHON

高級功能

使用COPY進行大批量加載

COPY命令對於批量加載數據非常有幫助:

# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
PYTHON

異步通知

您可以聽取數據庫的異步通知:

# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
PYTHON

介紹 IronPDF

psycopg2(開發人員如何使用):圖1 - IronPDF:Python PDF庫

IronPDF 是一個功能強大的 Python 庫,旨在使用 HTML、CSS、圖像和 JavaScript 創建、編輯和簽署 PDF。 它具有商業級性能且內存佔用低。 關鍵特性包括:

HTML到PDF的轉換:

將 HTML 文件、HTML 字串和 URL 轉換為 PDF。 例如,使用Chrome PDF渲染器將網頁呈現為PDF。

跨平台支持:

兼容各種 .NET 平台,包括 .NET Core、.NET Standard 和 .NET Framework。 支持Windows、Linux和macOS。

編輯和簽名:

設置屬性,使用密碼和權限添加安全性,並將電子簽名應用於您的 PDF。

頁面模板和設置:

自定義 PDF 的頁眉、頁腳、頁碼和可調邊距。 支持響應式佈局和自定義紙張大小。

標準合規:

遵循 PDF 標準,如 PDF/A 和 PDF/UA。 它支持UTF-8字符編碼並處理資產如圖像、CSS和字體。

使用IronPDF和psycopg2生成PDF文檔

import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
PYTHON

代碼說明

此腳本展示了如何使用psycopg2與PostgreSQL數據庫進行交互、數據操作(創建、插入、檢索)並與IronPDF集成生成文檔。

  1. 數據庫連接:使用psycopg2連接到一個名為"demo"的本地PostgreSQL數據庫,指定用戶身份驗證和數據庫主機詳細信息。
  2. 創建表:定義和執行一個SQL語句以創建一個名為users的表(如果它尚不存在)。該表有列id(整數,主鍵)、name(文本,不為空)和age(整數)。
  3. 數據插入:使用參數化查詢(user_data)向users表插入數據行。 每個元組都包含idnameage的值。
  4. 交易管理:在創建表和插入數據後提交交易,確保更改被保存在數據庫中。
  5. 數據檢索:執行SELECT查詢以從users表中獲取所有行(SELECT * FROM users)並檢索結果(rows)。

  6. PDF生成:使用IronPDF從HTML內容生成PDF文檔。 HTML內容包括一個標題和從users表中提取的數據的格式化表示。
  7. 文件保存:將生成的PDF文檔保存為"Demopsycopg2.pdf"在當前目錄中。
  8. 連接關閉:關閉數據庫游標(cur)和數據庫連接(conn)以釋放資源並確保適當清理。

對於異常處理,將腳本包裹在try-catch塊中,以確保在查詢或連接問題發生時處理所有錯誤操作。

輸出

psycopg2(開發人員如何使用):圖2 - 示例控制台輸出

PDF

psycopg2(開發人員如何使用):圖3 - 利用psycopg2存儲和檢索數據的示例輸出,而IronPDF生成PDF報告

IronPDF 授權

IronPDF在Python許可證密鑰上運行。 IronPDF for Python提供免費試用許可證密鑰,允許用戶在購買前測試其廣泛功能。

在使用IronPDF包之前,將許可證密鑰放置在腳本的開頭:

from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
PYTHON

結論

Psycopg2是一個強大而靈活的庫,用於在Python中與PostgreSQL數據庫進行交互。 其全面的功能集和高效的設計使其成為處理簡單和複雜數據庫操作的絕佳選擇。 IronPDF是一個強大的Python包和庫,可以直接從Python應用程序創建、操作和呈現PDF文檔。 它提供全面的功能,用於從HTML內容生成PDF,無縫整合到現有的Web技術中。 使用IronPDF,開發人員可以高效地自動化報告、發票和其他文檔的生成,提高生產力和用戶體驗。 其功能包括交互式PDF表單、文本提取、合併和拆分PDF,以及添加諸如密碼保護的安全功能。 IronPDF的多樣性和易用性使其成為開發者希望在其Python項目中實現PDF生成和操作功能的一個寶貴工具。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。