我无法从MSSQL服务器获取有效的字符串到python.我相信在某处存在编码不匹配.我相信它是在ODBC层和python之间,因为我能够在tsql和isql中获得可读的结果.
pyodbc期望什么字符编码?我需要在链中进行哪些更改才能使其正常工作?
具体例子
这是一个简化的python脚本作为示例:
#!/usr/bin/env python
import pyodbc
dsn = 'yourdb'
user = 'import'
password = 'get0lddata'
database = 'YourDb'
def get_cursor():
con_string = 'DSN=%s;UID=%s;PWD=%s;DATABASE=%s;' % (dsn, user, password, database)
conn = pyodbc.connect(con_string)
return conn.cursor()
if __name__ == '__main__':
c = get_cursor()
c.execute("select id, name from recipe where id = 4140567")
row = c.fetchone()
if row:
print row
Run Code Online (Sandbox Code Playgroud)
该脚本的输出是:
(Decimal('4140567'), u'\U0072006f\U006e0061\U00650067')
Run Code Online (Sandbox Code Playgroud)
或者,如果脚本的最后一行更改为:
print "{0}, '{1}'".format(row.id, row.name)
Run Code Online (Sandbox Code Playgroud)
然后结果是:
Traceback (most recent call last):
File "/home/mdenson/projects/test.py", line 20, in <module>
print "{0}, …Run Code Online (Sandbox Code Playgroud)