将格式设置为cursor.fetchall()结果

时间:2016-04-13 08:16:39

标签: python mysql tuples

我正在使用mysql.connection库到Python,我有这个方法:

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

有些想法?

2 个答案:

答案 0 :(得分:1)

如果rowtuple,您可以使用空格加入其中的每个值:

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

因此,用户选择的列数并不重要,它将始终加入row所拥有的列。

<强>更新

以上代码仅在行中的值为字符串时有效,因此您需要先将值转换为字符串然后再加入

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

答案 1 :(得分:1)

您可以使用join,但在加入混合unicode和整数列表时会遇到错误。使用内置的str函数和列表推导来创建预期的输出。

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