首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Python 操作 MySQL 實戰:PyMySQL 連線、建表、CRUD 與交易控制

     編輯:MySQL 資料庫相關知識

使用 Python PyMySQL 驅動程式操作 MySQL 資料庫的完整範例,涵蓋連線設定、資料庫/表建立、增刪改查與交易控制。

前置準備:MySQL 側設定

USE mysql;
UPDATE user SET Password=PASSWORD('Oracle11g') WHERE User='root';
FLUSH PRIVILEGES;

CREATE DATABASE myfamily;
USE myfamily;
CREATE TABLE people (
    id INT, 
    name VARCHAR(30), 
    age INT, 
    sex CHAR(1)
);
INSERT INTO people VALUES (0, 'Zihao Xu', 5, 'M');
SELECT * FROM people;

Python 程式碼:pyMySQL.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# filename: pyMySQL.py

import pymysql

# 連線設定
conn = pymysql.connect(
    host='127.0.0.1',
    database='myfamily',
    user='root',
    password='Oracle11g',
    charset='utf8mb4'
)

try:
    with conn.cursor() as cursor:
        # 新增
        r = cursor.execute("INSERT INTO people VALUES (6, 'Bill Gates', 58, 'M')")
        print(f"Insert affected rows: {r}")

        # 刪除
        cursor.execute("DELETE FROM people WHERE age=58")

        # 交易提交
        conn.commit()

        # 查詢
        r = cursor.execute("SELECT * FROM people")
        rows = cursor.fetchall()
        print("Query result:")
        for row in rows:
            print(row)

finally:
    conn.close()

關鍵技術點

項目說明
驅動程式PyMySQL 純 Python 實現,相容 MySQLdb API
連線參數建議明確指定 charset='utf8mb4' 完整支援 Unicode
Context Managerwith conn.cursor() 自動管理游標生命週期
交易控制預設自動提交關閉,需顯式 conn.commit();異常時 conn.rollback()
參數化查詢使用 cursor.execute(sql, params) 防止 SQL 注入
結果獲取fetchone()、fetchall()、fetchmany(size)

進階用法提示

  • 連線池:高併發場景使用 DBUtils.PooledDB 或 pymysqlpool
  • DictCursor:cursor = conn.cursor(pymysql.cursors.DictCursor) 回傳字典而非元組
  • SSH 隧道:生產環境透過 sshtunnel 建立加密連線
  • ORM 選擇:複雜專案建議 SQLAlchemy、Tortoise ORM 或 Peewee

PyMySQL 純 Python 實現、無系統依賴、部署簡單,是 Python 連接 MySQL 的主流選擇之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved