【发布时间】:2014-02-09 15:35:28
【问题描述】:
我正在使用 pyodbc 连接到 Teradata 数据库,现在似乎有些工作正常:
这个:
conn = connect(params)
cur = conn.cursor()
if len(argv) > 1:
query = ''.join(open(argv[1]).readlines())
else:
query = "SELECT count(*) FROM my_table"
cur.execute(query)
print "...done"
print cur.fetchall()
返回似乎是溢出的,一个像 140630114173190 这样的数字,但实际上表中只有 260 个条目(我是通过直接在 teradata 的 sql 助手上查询得到的)
但是,当执行select * 时,结果似乎是正确的。
知道会发生什么吗?
运行时间:
Linux eron-redhat-100338 2.6.32-131.0.15.el6.x86_64
谢谢
编辑:我认为这不是 fetchall() 问题。无论我得到一个列表、一个元组还是其他什么,这只会改变,但数字不会改变。
有趣的是,我发现改为
query = "SELECT CAST(count(*)) AS DECIMAL(10,2) FROM my_table"
确实得到了正确的数字,只是作为浮点数。整数出了点问题。
【问题讨论】:
-
fetchall方法应该返回 all result rows as a sequence of sequences,而不是单个标量值。您能否准确发布您从cur.fetchall()获得的信息? -
我编辑了我的问题。
标签: python odbc teradata pyodbc