フッターコンテンツにスキップ
PYTHONヘルプ

psycopg2(開発者向けのしくみ)

このpsycopg2ライブラリは、Pythonプログラミング言語用の人気のPostgreSQLデータベースアダプターです。 その効率性、スレッドセーフティ、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は、HTML、CSS、画像、JavaScriptを使用してPDFを作成、編集、署名するために設計された強力なPythonライブラリです。 低メモリフットプリントながら商用グレードのパフォーマンスを備えています。 主な機能は以下のとおりです:

HTMLからPDFへの変換:

HTMLファイル、HTML文字列、およびURLをPDFに変換します。 たとえば、Chrome PDFレンダラーを使用してウェブページをPDFとしてレンダリングします。

クロスプラットフォームサポート:

.NET Core、.NET Standard、.NET Frameworkを含むさまざまな.NETプラットフォームと互換性があります。 Windows、Linux、macOSをサポートしています。

編集と署名:

プロパティを設定し、パスワードと権限でセキュリティを追加し、PDFにデジタル署名を適用します。

ページテンプレートと設定:

ヘッダー、フッター、ページ番号、調整可能な余白を使用してPDFをカスタマイズします。 レスポンシブレイアウトやカスタム用紙サイズをサポートします。

標準準拠:

PDF/AやPDF/UAなどのPDF標準に準拠しています。 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. テーブル作成: usersという名前のテーブルがまだ存在しない場合に作成するSQL文を定義して実行します。 テーブルにはid(整数、主キー)、name(テキスト、非NULL)、age(整数)の列があります。
  3. データ挿入: パラメータ化されたクエリuser_dataを使用してusersテーブルにデータ行を挿入します。 各タプルにはidnameageの値が含まれています。
  4. トランザクション管理: テーブル作成とデータ挿入の後にトランザクションをコミットし、データベースに変更を保存します。
  5. データの取得: usersテーブルからすべての行SELECT * FROM usersを取得するSELECTクエリを実行し、結果rowsを取得します。

  6. PDF生成: HTMLコンテンツからIronPDFを使用して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アプリケーションから直接PDFドキュメントの作成、操作、レンダリングを支援する強力なPythonパッケージとライブラリです。 HTMLコンテンツからのPDF生成に関する包括的な機能を提供し、既存のWeb技術とシームレスに統合します。 IronPDFを使用すると、開発者はレポート、請求書、その他の文書の生成を効率的に自動化し、生産性とユーザー体験を向上させることができます。 その機能には、インタラクティブなPDFフォーム、テキスト抽出、PDFのマージと分割、およびパスワード保護などのセキュリティ機能の追加が含まれます。 IronPDFの多用途性と使いやすさは、PythonプロジェクトでPDF生成および操作機能を実装したい開発者にとって貴重なツールです。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。