AdSense

網頁

2025/6/11

Python 存取PostgreSQL資料庫

Python存取/連接PostgreSQL資料庫的方式如下。


環境

  • Windows 11
  • Python 3.13.3
  • PostgreSQL 17


下載模組/函式庫

在命令列執行pip install psycopg2-binary下載Python連接PostgreSQL常用的模組/函式庫psycopg2

C:\>pip install psycopg2-binary
Collecting psycopg2-binary
  Downloading psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl.metadata (4.8 kB)
Downloading psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl (2.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6/2.6 MB 197.0 kB/s eta 0:00:00
Installing collected packages: psycopg2-binary
Successfully installed psycopg2-binary-2.9.10

建立資料表

在PostgreSQL資料庫建立一個資料表employee

CREATE TABLE public.employee (
	id int4 NOT NULL,
	"name" varchar NULL,
	CONSTRAINT employee_pk PRIMARY KEY (id)
);

employee資料表新增一筆資料如下:

INSERT INTO public.employee
(id, "name")
VALUES(1, 'john');


連線

以下Python程式利用psycopg2連線PostgreSQL資料庫並查詢employee資料表。

import psycopg2 # 匯入psycopg2

# 取得資料庫連線
conn = psycopg2.connect(database = "postgres", 
                        user = "postgres", 
                        host= 'localhost',
                        password = "12345",
                        port = 5432)

cur = conn.cursor() # 取得cursor來執行SQL操作,相當於session

# SQL查詢帶參數
cur.execute(
    """
            SELECT * FROM employee WHERE id = %s AND name = %s
    """, 
    (1, 'john',))

rows = cur.fetchall() # 取得查詢結果為list

cur.close() # 關閉cursor
conn.close() # 關閉連線

for row in rows:
    print(row) # 印出一列資料


測試

執行後印出以下。

(1, 'john')


沒有留言:

AdSense