Преобразование значений из результатов sqlite - PullRequest
0 голосов
/ 15 марта 2019

Issue Image and expected output

У меня проблемы с преобразованием из списка в отдельные строки в Python. Ниже приведен код, используемый для получения строк и исключения:

Код:

mycursor.execute("SELECT fid,contents,input_type  FROM frame_report1")

myresult = mycursor.fetchall()
print myresult
# myresult --->[(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]
print type(myresult)#list type
for x,x1,x2 in myresult:
    g = int(''.join(map(str, x))) #int type
    l = ''.join( x1) #string type
    k = ''.join( x2) #string type

Исключение:

g = ''.join(map(str, x))
TypeError: argument 2 to map() must support iteration

Я хочу преобразовать значения из myresult в переменные g, l и k.

РЕДАКТИРОВАТЬ: @Matt B: спасибо за ответ, я использовал упомянутый вами код, но он бесполезен, нам нужно получить содержимое строки 449, 454 455 в отдельном массиве String, в настоящее время я собираюсь объединиться. пожалуйста, руководство, спасибо заранее, пожалуйста, проверьте прикрепленное изображение Изображение, показывающее изображение проблемы и ожидаемое изображение.

код:

myresult = [(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]
row = 0
for x, x1, x2 in myresult:
    g = int(''.join(map(str, x)))  # int type

    l = ''.join(x1)  # string type
    k = ''.join(x2)  # string type
    rcount_general = self.tableWidget.rowCount()
    self.tableWidget.insertRow(rcount_general)
    r = 0
    for i in range(rcount_general + 1):
        self.tableWidget.setItem(row, 0, QtGui.QTableWidgetItem(g))
        self.tableWidget.setItem(row, 1, QtGui.QTableWidgetItem(l))
        self.tableWidget.setItem(row, 2, QtGui.QTableWidgetItem(k))        
        r = r + 1
    row = row + 1

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Нет необходимости использовать соединение, вам просто нужно выполнить итерацию с помощью перечисления:

for row, result in enumerate(myresult):
    self.tableWidget.insertRow(self.tableWidget.rowCount())
    for col, value in enumerate(result):
        self.tableWidget.setItem(row, col, QtWidgets.QTableWidgetItem(str(value)))
0 голосов
/ 15 марта 2019

Это то, что вы ищете?

myresult = [(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]

g = ''.join([str(x[0]) for x in myresult])
l = ''.join([str(x[1]) for x in myresult])
k = ''.join([str(x[2]) for x in myresult])

print(g)
print(l)
print(k)

выход:

449454455

text1text2text3

checkboxtextboxtextbox
...