使用pyodbc时结果集损坏
Python版本是2.6,pyodbc的版本是3.0.6。
下面是一个Python代码示例:
#!/usr/bin/python26
import pyodbc
import os
import sys
SQL = sys.argv[1];
conn = pyodbc.connect('DSN=VerticaDSN')
cursor = conn.cursor()
cursor.execute(SQL)
rows = cursor.fetchall()
for row in rows:
print row[0]
在输出数据时,Python没有直接把表里的数据打印出来,而是输出了一些损坏的数据,只有部分数据,比如:
ps
t Foods
smart
ly Dollar
enney
ean
rd
期望的结果应该是这样的:
Ames
Ukrops
Giant Foods
Cardsmart
Aco
Family Dollar
JC Penney
Eckerd
为什么结果会变得损坏呢?有没有什么建议?
1 个回答
1
这个问题可能不是出在 pyodbc
上,而是 ODBC 驱动本身。你可以尝试以下几种方法:
- 尝试把列的数据类型转换成其他类型(我不太确定你用的是哪个数据库,但有可能这个列是 Unicode 格式,而驱动只理解 ASCII,或者反过来;我觉得这可能是问题所在)
- 如果有的话,使用专门为你的数据库设计的 Python 客户端,而不是 ODBC(比如
cx_Oracle
或psycopg2
) - 查看 ODBC 驱动的配置参数
- 从其他供应商那里安装 ODBC 驱动