[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
留言分享你的想法!
avatar-img
ARON HACK 亞倫害的沙龍
23會員
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
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
如果MySQL忘記密碼,可以使用修改cnf檔案免去登入驗證,再進入MySQL重新設定密碼的方式,找回密碼,另外還附上有一般修改密碼的方式。
Thumbnail
如果MySQL忘記密碼,可以使用修改cnf檔案免去登入驗證,再進入MySQL重新設定密碼的方式,找回密碼,另外還附上有一般修改密碼的方式。
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軟體 裡面下
Thumbnail
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
Thumbnail
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
Thumbnail
有了MySQL後,當然就要下指令來玩玩 能玩爆代表你有天賦,每一次爆炸你又能修復就是成長大躍進的時刻 但是看看你的資料庫空空如也,只有系統DB怎麼辦咧 還好網路上有很多善心人士願意分享範例資料庫供人使用 話不多說就來試試看吧  1. 先找到你要的範例資料庫 範例資料庫下載
Thumbnail
有了MySQL後,當然就要下指令來玩玩 能玩爆代表你有天賦,每一次爆炸你又能修復就是成長大躍進的時刻 但是看看你的資料庫空空如也,只有系統DB怎麼辦咧 還好網路上有很多善心人士願意分享範例資料庫供人使用 話不多說就來試試看吧  1. 先找到你要的範例資料庫 範例資料庫下載
Thumbnail
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。
Thumbnail
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News