2016-04-13 24 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