PyoBDC和直接查询在Teradata上有所不同



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

相关内容

  • 没有找到相关文章

最新更新