2016-04-13 25 views
0

林與mysql.connection庫Python的工作,我有這樣的方法:設置格式cursor.fetchall()導致

query = ("select " + columns + " from " + table) 
self.cursor.execute(query) 
data = self.cursor.fetchall() 
for row in data: 
    print row 

在我的打印行,我得到的是這樣的:

(u'Kabul', u'AFG', u'Kabol', 1780000) 

我想獲得它作爲一個字符串,這樣的結果:

Kabul AFG Kabol 1780000 

我可以這樣做:

print row[0] + ' ' + row[1] + row[2] + ' ' + row[3] 

但是,如果用戶將少於4列或超過4

我也是在想我的元組循環查詢它不會工作,但我得到這樣的結果:

Kabul 
AFG 
Kabol 
1780000 

有些想法嗎?

回答

1

您可以使用join但將運行在加入混合Unicode和整數列表時出現錯誤。使用內置的str函數和列表理解來創建您的預期輸出。

print ' '.join(str(x) for x in row) 
+0

這工作很好=)謝謝。 –

+1

我想補充一點,我得到一個Unicode的錯誤或類似的東西,我解決這個: print「」.join(str(unicode(c).encode('utf-8'))for c in行) –

1

如果rowtuple,你可以在它使用的空間加入每一個值:

print " ".join(row) 
# Kabul AFG Kabol 1780000 

所以,不要緊多少列用戶已經選擇了,它總是會加入什麼row了。

UPDATE:

上面的代碼工作只有在行的值是字符串,那麼您需要首先值轉換爲字符串,然後加入

print " ".join(map(str, row)) 
+1

如果元組中的任何內容不是字符串,這將失敗。 –

+0

謝謝。我更新了答案。 – AKS