PostgreSQL - Python Interface: A Beginner's Guide

你好,未來的數據庫魔法師們!我很興奮能夠成為你們在PostgreSQL和Python世界的激動人心的旅程中的導遊。作為一個教了多年計算機科學的人,我可以告訴你們,這種結合就像花生醬和果醬一樣——簡直太美味了!所以,讓我們挽起袖子,開始動手吧!

PostgreSQL - Python

安裝

在我們能夠開始創造魔法之前,我們需要設定我們的工具。把這想成是在烹飪一頓美食之前準備你的廚房。

  1. 首先,確保你已在電腦上安裝了PostgreSQL。你可以從官方PostgreSQL網站下載。

  2. 接下來,我們需要安裝一個Python模塊,讓我們能夠與PostgreSQL進行通信。打開你的終端或命令提示符,並輸入:

pip install psycopg2

這個命令就像讓你的電腦把一個新工具加入到它的工具箱中。一旦安裝完成,你就準備好開始了!

Python psycopg2模塊APIs

現在有了我們的工具,讓我們快速看看它們能做些什麼。psycopg2模塊為我們提供了一套與PostgreSQL交互的函數。這裡是一個最常見函數的表格:

函數 描述
connect() 建立與數據庫的連接
cursor() 創建一個游標對象來執行SQL命令
execute() 執行數據庫操作(查詢或命令)
fetchone() 獲取查詢結果集的下一行
fetchall() 獲取查詢結果的所有(剩餘)行
commit() 提交當前的交易
rollback() 回滾到任何待定交易的開始
close() 關閉數據庫連接

如果這些看起來像是一種外語,別擔心。我們將在接下來的內容中詳細探索每一個!

連接到數據庫

讓我們從連接到我們的數據庫開始。這就像敲門並請求進入一樣。

import psycopg2

try:
connection = psycopg2.connect(
database="mydb",
user="myuser",
password="mypassword",
host="localhost",
port="5432"
)
print("連接成功!")
except (Exception, psycopg2.Error) as error:
print("連接到PostgreSQL時出錯", error)

在這段代碼中,我們:

  1. 引入了psycopg2模塊
  2. 使用connect()函數來建立連接
  3. 提供了數據庫名稱、用戶、密碼等必要信息
  4. 使用try-except塊來處理任何潛在的錯誤

如果一切順利,你應該會看到"連接成功!"被打印出來。恭喜你,你剛剛打開了通往你的數據庫的大門!

創建一個表

現在我們已經進入了,讓我們創建一個表來存儲一些數據。想象你正在設置一個書架來組織你的書籍。

try:
cursor = connection.cursor()
create_table_query = '''CREATE TABLE books
(ID INT PRIMARY KEY     NOT NULL,
TITLE           TEXT    NOT NULL,
AUTHOR          TEXT    NOT NULL,
PUBLISHED_DATE  DATE);'''
cursor.execute(create_table_query)
connection.commit()
print("表創建成功!")
except (Exception, psycopg2.Error) as error:
print("創建表時出錯", error)
finally:
if connection:
cursor.close()
connection.close()
print("PostgreSQL連接已關閉")

這裡發生了什麼:

  1. 我們創建了一個游標對象,這就像我們的數據庫助手
  2. 我們定義了我們的SQL查詢來創建一個名為'books'的表
  3. 我們使用execute()來運行查詢
  4. 我們使用commit()來使我們的更改永久化
  5. 最後,我們關閉我們的游標和連接,成為一個好的數據庫公民

INSERT操作

是時候在我們的書架上添加一些書籍了!讓我們將一條記錄插入我們的表中。

try:
cursor = connection.cursor()
insert_query = """ INSERT INTO books (ID, TITLE, AUTHOR, PUBLISHED_DATE)
VALUES (%s, %s, %s, %s)"""
record_to_insert = (1, "To Kill a Mockingbird", "Harper Lee", "1960-07-11")
cursor.execute(insert_query, record_to_insert)
connection.commit()
print("記錄插入成功")
except (Exception, psycopg2.Error) as error:
print("插入數據時出錯", error)

在這段代碼中:

  1. 我們創建了我們的INSERT查詢,並為我們的值使用占位符(%s)
  2. 我們定義了一個元組,包含了我們想要插入的值
  3. 我們執行查詢,並傳入我們的值元組
  4. 我們提交更改

SELECT操作

現在,讓我們檢查一下我們的書架,看看我們有什麼!

try:
cursor = connection.cursor()
select_query = "SELECT * from books"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
print("ID:", row[0])
print("TITLE:", row[1])
print("AUTHOR:", row[2])
print("PUBLISHED DATE:", row[3], "\n")
except (Exception, psycopg2.Error) as error:
print("獲取數據時出錯", error)

這裡發生了什麼:

  1. 我們創建了一個SELECT查詢來從我們的'books'表中獲取所有記錄
  2. 我們執行查詢
  3. 我們使用fetchall()來獲取所有結果
  4. 我們遍歷結果並打印每本書的詳細信息

UPDATE操作

哎呀!我們犯了一個錯誤。讓我們更新一條記錄來修正它。

try:
cursor = connection.cursor()
update_query = """Update books set AUTHOR = %s where ID = %s"""
cursor.execute(update_query, ("Nelle Harper Lee", 1))
connection.commit()
print("記錄更新成功")
except (Exception, psycopg2.Error) as error:
print("更新數據時出錯", error)

在這段代碼中:

  1. 我們創建了一個UPDATE查詢,並為新作者名稱和ID使用占位符
  2. 我們執行查詢,並傳入新值
  3. 我們提交更改

DELETE操作

最後,讓我們學習如何從我們的書架上移除一本書。

try:
cursor = connection.cursor()
delete_query = """Delete from books where ID = %s"""
cursor.execute(delete_query, (1,))
connection.commit()
print("記錄刪除成功")
except (Exception, psycopg2.Error) as error:
print("刪除數據時出錯", error)
finally:
if connection:
cursor.close()
connection.close()
print("PostgreSQL連接已關閉")

這裡發生了什麼:

  1. 我們創建了一個DELETE查詢,並為ID使用占位符
  2. 我們執行查詢,並傳入我們想要刪除的記錄的ID
  3. 我们提交更改
  4. 最後,我們關閉我們的游標和連接

就这样!你剛剛學會了使用Python操作PostgreSQL的基本知識。記住,熟能生巧,所以不要害怕嘗試不同的東西。祝你好運,願你的數據庫永遠井然有序!

Credits: Image by storyset