【发布时间】:2011-06-30 17:09:37
【问题描述】:
编辑: 我完全修改了这个问题,以反映我对问题的更好理解
用于获取数据库中所有表名的 PYODBC+MYSQL 命令
cursor.execute("select table_name from information_schema.tables where
table_schema='mydbname'")
结果是一个 unicode 字符串列表,每个字符串中每第二个字符被省略。
information_schema DB 是 utf8,虽然我的表名是纯 ascii。从我的 latin1 数据库中读取工作正常。执行set character_set_* = 'utf8' 没有帮助。
从 C++/ODBC 测试程序执行相同的查询工作正常。
你知道pyodbc 是如何处理字符编码的吗?使用 utf8 数据库时它采用什么编码?
我使用 UnixODBC、python 2.6.4、pyodbc 2.1.7 在 Linux 上工作
【问题讨论】:
-
为什么你在本地 MySQL 数据库中使用 ODBC,而不是 MySQLdb 库?
-
@Daniel:这是一种“遗留”代码,我们刚刚从 DB2 切换到 mysql。我会看看这个库,它需要数据库是本地的吗?我不确定这将永远是这种情况
-
不,它适用于远程数据库。我不知道它是否能解决你的问题,但至少会少一个系统。
-
如果您在 Windows 上工作,您可以尝试使用来自 win32 扩展的
odbc模块(已包含在 ActiveState 发行版中)。 -
@Michal:谢谢,但我在 Linux 上工作......
标签: mysql unicode character-encoding odbc pyodbc