我正在使用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"
确实得到正确的数字,只有浮点数。整数正在发生。
答案 0 :(得分:0)
虽然fetchall()
返回记录集,并且您需要第一列的第一列,但您应该使用以下内容:
print('# of rows: [%s]' % (c.fetchall()[0][0]))
或:
for row in c.fetchall():
print('# of rows: [%s]' % (row[0]))