簡體   English   中英

熊貓read_sql的Python編碼問題

[英]Python encoding issue with pandas read_sql

因此,我嘗試將兩個字符串編碼為utf-8,以便可以將其與pandas.read_sql一起使用:

selectedTable = "ACC__AccountCodes"
baseSql = "SELECT * FROM FileMaker_Fields WHERE TableName="

現在,當我對這兩件事進行編碼時:

baseSql.encode('utf-8')
selectedTable.encode('utf-8')
sqlString = "{}{}".format(baseSql, selectedTable)

我的輸出如下所示:

b'SELECT * FROM FileMaker_Fields WHERE TableName='b'A\\x00C\\x00C\\x00_\\x00_\\x00A\\x00c\\x00c\\x00o\\x00u\\x00n\\x00t\\x00C\\x00o\\x00d\\x00e\\x00s\\x00''

因此,當我使用設置為“ latin1”的編碼運行它時,出現錯誤:

pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM FileMaker_Fields WHERE TableName=ACC__AccountCodes': ('HY000', '[HY000] [\x00F\x00i\x00l\x00e\x00M\x00a\x00k\x00e\x00r\x00]\x00[\x00F\x00i\x00l\x00e\x00M\x00a\x00k\x00e\x00r\x00]\x00 \x00F\x00Q\x00L\x000\x000\x000\x007\x00/\x00(\x001\x00:\x004\x007\x00)\x00:\x00 \x00T\x00h\x00e\x00 \x00c\x00o\x00l\x00u\x00m\x00n\x00 \x00n\x00a\x00m\x00e\x00d\x00 \x00"\x00A\x00"\x00 \x00d\x00o\x00e\x00s\x00 \x00n\x00o\x00t\x00 \x00e\x00x\x00i\x00s\x00t\x00.....

我似乎找不到任何解決此問題的方法。 我嘗試過的所有事情都會使我回到這個問題,這會導致語法無效的SQL錯誤。 我正在使用pyodbc,它希望將utf-8編碼作為輸入。 有什么想法嗎?

您不必將它們編碼為utf-8; 嘗試將它們作為普通字符串傳遞給pandas read_sql函數,它應該可以正常工作,如果不能正常運行,那么您在其他地方會遇到問題...但是編碼不是您想要的。

Pyodbc接受查詢中的unicode字符串,所以這根本不是您的問題。

我建議還閱讀pyodbc文檔中的Unicode部分 ,其中包含某些數據庫的特定unicode配置,盡管在您的情況下,我認為這根本不是問題,因為它與數據庫驅動程序編碼有關,而與您的sql查詢無關,每次都應該是一個普通的unicode字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM