【问题标题】:pyobdc and direct query differ in TeradataTeradata 中的 pyodbc 和直接查询不同
【发布时间】: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"

确实得到了正确的数字,只是作为浮点数。整数出了点问题。

【问题讨论】:

标签: python odbc teradata pyodbc


【解决方案1】:

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

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

或:

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

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2018-07-05
    • 2015-08-04
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多