1. 程式人生 > >【Python】“pandas”庫“to_sql”報錯“Invalid MySQL identifier”處理記錄

【Python】“pandas”庫“to_sql”報錯“Invalid MySQL identifier”處理記錄

     最近又要幫客戶寫指令碼拉一份統計日報,就先把一堆一堆的小SQL寫好測好後,準備用Python封裝一下。但是用到第三方“pandas”模組的“to_sql”方法往MySQL資料庫寫資料時,卻報了“Invalid MySQL identifier”無效識別符號的錯。在網上找了一下,經過嘗試,順利解決。

# for c in uname:
#     if not re.match(basere, c):
#         if not (0x80 < ord(c) < 0xFFFF):
#             raise ValueError("Invalid MySQL identifier '%s'" % uname)

     我的環境是Python5.7.12 + pandas0.18.0,正如原始碼檔案註釋中以及SO中所提到,這個報錯檢查是為了“Filter for unquoted identifiers”,過濾在表名、欄位名中使用不符合MySQL要求的識別符號,主要就是數字了(我的情況就是欄位名使用的是阿拉伯數字形式的“年月日”)。但是按照原始碼檔案註釋中的參考文件(http://dev.mysql.com/doc/refman/5.0/en/identifiers.html),這段程式碼是基於MySQL5.0版本的。我的MySQL版本是5.6,包括新版的5.7及至開發中的8.0,其實表名和(或)欄位名包括或者全部數字都是完全支援的。所以,這是pandas庫亟待修復的BUG了

https://github.com/pydata/pandas/issues/13206