2014-01-20 26 views
0
我用pyodbc連接到Teradata數據庫

不同,它似乎是東西現在能正常使用:pyobdc和直接查詢在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

的'fetchall'方法應該返回[所有結果行作爲序列序列](http://www.python.org/dev/peps/pep-0249/#fetchall),而不是單個標量值。你能準確地發佈你從'cur.fetchall()'得到的結果嗎? – lanzz

+0

我編輯了我的問題。 – elelias

回答

0

雖然fetchall()返回記錄集,你需要第一個記錄的第一列,你應該使用類似:

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

或:

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