使用pyodbc时结果集损坏

2 投票
1 回答
591 浏览
提问于 2025-04-17 15:18

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_Oraclepsycopg2
  • 查看 ODBC 驱动的配置参数
  • 从其他供应商那里安装 ODBC 驱动

撰写回答