首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Python MySQLdb 插入 Unicode 字符串的正確姿勢

     編輯:程式設計綜合問答

關鍵點

  1. 數據庫/表/連接字符集均為 utf8mb4:
    CREATE DATABASE db CHARSET utf8mb4;
    CREATE TABLE t (c VARCHAR(100)) CHARSET utf8mb4;
  2. 連接參數指定 charset:
    import MySQLdb
    conn = MySQLdb.connect(host='...', user='...', passwd='...', db='...', charset='utf8mb4')
  3. 直接傳遞 Unicode 字符串,無需手動編碼:
    s = u"你好"
    cursor.execute("INSERT INTO t VALUES (%s)", (s,))  # 注意元組
    conn.commit()

常見錯誤

  • 使用 `utf8` 而非 `utf8mb4`,導致 Emoji 等 4 字節字符報錯。
  • 參數傳遞用字典 `{s}` 或列表 `[s]` 而非元組 `(s,)`。
  • 未在連接指定 charset,驅動默認 latin1,存入亂碼。

現代替代

推薦使用 PyMySQL(純 Python,API 兼容)或 mysqlclient(MySQLdb 分支,性能更好),配合 SQLAlchemy ORM 更健壯。

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