繁体   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