2016-04-13 3 views
0

Im работая с 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 но будет работать в ошибки при объединении списка смешанных юникодов и целых чисел. Используйте встроенную функцию str и список, чтобы создать свой предполагаемый вывод.

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

Эта работа хорошо =) Спасибо. –

+1

Я хотел бы добавить, что я получаю сообщение об ошибке unicode или что-то в этом роде: я разрешаю с этим: print "" .join (str (unicode (c) .encode ('utf-8')) для c в ряд) –

1

Если row является tuple вы могли бы присоединиться все значения в нем, используя пространство:

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

Таким образом, это не имеет значения, сколько столбцов выбрал пользователь, он всегда будет присоединиться к тому, row имеет.

UPDATE:

Приведенный выше код работает только, если значения в строке являются строки, так что вы должны сначала преобразовать значения в строку, а затем присоединиться к

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

Это не удастся, если что-либо в кортеже не является строкой. –

+0

Спасибо. Я обновил ответ. – AKS

Смежные вопросы