我正在使用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 Assistant上查询来获得)
)但是,在执行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"
确实获得正确的数字,仅在float号码中。整数正在发生。
当fetchall()
返回记录集时,您需要第一列的第一列,您应该使用以下内容:
print('# of rows: [%s]' % (c.fetchall()[0][0]))
或:
for row in c.fetchall():
print('# of rows: [%s]' % (row[0]))