3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
目錄 原始文章 [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; ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; 2) 檢查Charater Set SHOW FULL COLUMNS FROM table_name; 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語言,快速入門資料科學

本文由aronhackcom提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦