从 sqlite 结果转换值
Converting values from sqlite results
我在从 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,目前我正在合并。请指导,在此先感谢,请检查显示问题图像和预期图像的附加图像。
代码:
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
这是您要找的吗?
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
不需要使用join,只需要借助enumerate进行迭代即可:
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)))
我在从 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,目前我正在合并。请指导,在此先感谢,请检查显示问题图像和预期图像的附加图像。
代码:
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
这是您要找的吗?
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
不需要使用join,只需要借助enumerate进行迭代即可:
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)))