[Python]使用MySQLdb連線到MySQL的常見問題

更新 發佈閱讀 5 分鐘
raw-image

原始文章

[Python]使用MySQLdb連線到MySQL的常見問題

在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。

import MySQLdb

db = MySQLdb.connect(
host = '主機IP或網址',
user = '資料庫帳號',
passwd = '資料庫密碼',
db = '資料庫名稱')

cursor = db.cursor()
cursor.execute("select * from table_name;")

編碼問題

編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。關於這兩者的差別,可以參考這篇文章,〈What is the difference between collation and character set?〉

使用MySQLdb的Insert匯入資料時,因為中文和英文的編碼不同,可能會出現錯誤訊息如下:

cursor.execute("insert into table_name (col1, col2, col3) values ('台北', '台南', '高雄');")

> UnicodeEncodeError: 'latin-1' codec can't encode characters in position 50-51: ordinal not in range(256)

1) 檢查Collation

USE database_name;
SELECT @@character_set_database, @@collation_database;
raw-image
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

2) 檢查Charater Set

SHOW FULL COLUMNS FROM table_name;
raw-image
ALTER TABLE table_name CHARACTER SET utf8, COLLATE utf8_general_ci;

3) 直接在MySQL Insert看看

可以直接把SQL Query丟到MySQL的介面執行,而不是透過Python。如果成功,代表資料庫的編碼其實是正確的。

INSERT INTO table_name (col1, col2, col3) VALUES ('台北', '台南', '高雄');

4) 在MySQLdb.connect中增加參數

db = MySQLdb.connect(
host = '主機IP或網址',
user = '資料庫帳號',
passwd = '資料庫密碼',
db = '資料庫名稱',
charset = 'utf8')

fetch all

執行SQL Query時,如果資料表有100列資料,以下的SQL只會回傳100。
cursor.execute(“SELECT * FROM table_name;”)

不要緊張,其實一切都正常運作,只要加上以下這行就可以了。

table = cursor.fetchall()

commit

使用MySQLdb在MySQL中新增資料時

cursor.execute("INSERT INTO table_name (col1, col2, col3) VALUES (3, 4, 5);")

新增後,在Pyton中檢查一切正常,但到MySQL中卻發現資料根本沒有被寫進資料庫。再一次地,不要緊張,加上這行就可以了。

db.commit()

注意,這裡的db會對應到最上面,使用MySQLdb.connect建立連線時的變數名稱。

推薦文章

在DataCamp學Python和R語言,快速入門資料科學

留言
avatar-img
ARON HACK 亞倫害的沙龍
24會員
34內容數
2024/10/24
pip和pipenv都是常用的Python套件管理工具,但它們的用途和運作方式略有不同。讓我們來看看它們的差異...
Thumbnail
2024/10/24
pip和pipenv都是常用的Python套件管理工具,但它們的用途和運作方式略有不同。讓我們來看看它們的差異...
Thumbnail
2024/10/24
許多大型語言模型(LLM)開始允許使用者將自己的資料餵進模型中,像是 OpenAI 的 ChatGPT 和 Anthropic 的 Claude。有了這個功能,你可以上傳你的部落格文章、程式碼或資料集來客製化模型的回應。在這篇文章中,你將學習如何從你的 WordPress 網站提取內容並餵給...
Thumbnail
2024/10/24
許多大型語言模型(LLM)開始允許使用者將自己的資料餵進模型中,像是 OpenAI 的 ChatGPT 和 Anthropic 的 Claude。有了這個功能,你可以上傳你的部落格文章、程式碼或資料集來客製化模型的回應。在這篇文章中,你將學習如何從你的 WordPress 網站提取內容並餵給...
Thumbnail
2024/10/24
CKIP-Transformer 是一個繁體中文的自然語言處理 (NLP) 模型,雖然速度偏慢,但是在切詞、詞性標記和命名實體識別等方面都有很優秀的表現。然而,CKIP-Transformer 的輸出並非完美無缺,有時需要額外的資料清理才能進行後續應用。
Thumbnail
2024/10/24
CKIP-Transformer 是一個繁體中文的自然語言處理 (NLP) 模型,雖然速度偏慢,但是在切詞、詞性標記和命名實體識別等方面都有很優秀的表現。然而,CKIP-Transformer 的輸出並非完美無缺,有時需要額外的資料清理才能進行後續應用。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
種類 SQL指令分三大部分: 資料定義語言(Data Definition Language,DDL):建立資料表、索引和檢視表等,和定義資料表的欄位。 資料操作語言(Data Manipulation Language,DML):資料表紀錄查詢、插入、刪除和更新指令。 資料控制語言(Dat
Thumbnail
種類 SQL指令分三大部分: 資料定義語言(Data Definition Language,DDL):建立資料表、索引和檢視表等,和定義資料表的欄位。 資料操作語言(Data Manipulation Language,DML):資料表紀錄查詢、插入、刪除和更新指令。 資料控制語言(Dat
Thumbnail
SQL 基本篇 - CRUD、運算子、內建函式
Thumbnail
SQL 基本篇 - CRUD、運算子、內建函式
Thumbnail
MySQL 應用到 URL Shortener 上
Thumbnail
MySQL 應用到 URL Shortener 上
Thumbnail
客戶發來詢問,我想修改SQL Server 2019 定序該如何做? 首先需要知道database的定序(Collation)是什麼,其實是決定資料庫所使用的字元集(character sets)、排序的方式。 因為客戶的SQL Server是英文版本,通常臺灣地區的預設定序是 Chin
Thumbnail
客戶發來詢問,我想修改SQL Server 2019 定序該如何做? 首先需要知道database的定序(Collation)是什麼,其實是決定資料庫所使用的字元集(character sets)、排序的方式。 因為客戶的SQL Server是英文版本,通常臺灣地區的預設定序是 Chin
Thumbnail
在這一課中,我們將學習如何在Python中使用sqlite3模塊進行基本的資料庫操作。 創建資料庫和表 首先,我們需要創建一個資料庫和一個表。
Thumbnail
在這一課中,我們將學習如何在Python中使用sqlite3模塊進行基本的資料庫操作。 創建資料庫和表 首先,我們需要創建一個資料庫和一個表。
Thumbnail
我自己是使用微軟的SQLIT軟體 這個軟體的操作上 沒有辦法直接用滑鼠點選或是拖拉的方式來看到你想看到的表格 都是要下指令的像是要看data.sqlite中的user這個table我就必須下 才能把table調閱出來看 那做為一個python三年工作經驗的工程師通常我不會直接在SQLIT軟體 裡面下
Thumbnail
我自己是使用微軟的SQLIT軟體 這個軟體的操作上 沒有辦法直接用滑鼠點選或是拖拉的方式來看到你想看到的表格 都是要下指令的像是要看data.sqlite中的user這個table我就必須下 才能把table調閱出來看 那做為一個python三年工作經驗的工程師通常我不會直接在SQLIT軟體 裡面下
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News