teradata中的pyobdc和直接查询不同

时间:2014-01-20 12:41:42

标签: python odbc teradata pyodbc

我正在使用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"

确实得到正确的数字,只有浮点数。整数正在发生。

1 个答案:

答案 0 :(得分:0)

虽然fetchall()返回记录集,并且您需要第一列的第一列,但您应该使用以下内容:

print('# of rows: [%s]' % (c.fetchall()[0][0]))

或:

for row in c.fetchall():
    print('# of rows: [%s]' % (row[0]))