带TableWidget的Python PyQt和Psycopg2

带TableWidget的Python PyQt和Psycopg2,python,pyqt,psycopg2,qtablewidget,Python,Pyqt,Psycopg2,Qtablewidget,我试图将查询中的数据添加到pyqt中的table小部件中,但是我很难将所有行放入其中。现在,我的代码只返回第一列和第三列,其中包含数据!在这方面真的需要一些帮助! 总共有5列和7055行 我的代码: import psycopg2 from PyQt4 import QtCore, QtGui def populate(self): con = psycopg2.connect("dbname=postgres user=username host=servername password=pa

我试图将查询中的数据添加到pyqt中的table小部件中,但是我很难将所有行放入其中。现在,我的代码只返回第一列和第三列,其中包含数据!在这方面真的需要一些帮助! 总共有5列和7055行

我的代码:

import psycopg2
from PyQt4 import QtCore, QtGui

def populate(self):
con = psycopg2.connect("dbname=postgres user=username host=servername password=passowrd")
cur = con.cursor()
cur.execute("""SELECT * FROM doarni.bins_v2""")
data = cur.fetchall()
a = len(data) #rows
b =  len(data[0]) #columns
self.ui.tableWidget.setSortingEnabled(True)
self.ui.tableWidget.setRowCount(a)
self.ui.tableWidget.setColumnCount(b)
self.ui.tableWidget.setHorizontalHeaderLabels(['column1', 'column2', 'column3', 'column4', 'column5'])
i = 1 #row
j = 0 #column
for j in range(a):
    for i in range(b):
        item = QtGui.QTableWidgetItem(data[j][i])
        self.ui.tableWidget.setItem(j, i, item)
self.ui.tableWidget.sortByColumn(0, QtCore.Qt.DescendingOrder)

请尝试以下代码,该代码也配置为显示Unicode字符串:

rows = cur.fetchall()
self.tableWidget.setRowCount(len(rows))
qs=QtCore.QString()
r=0
for row in rows:
    r=r+1
    col= 0
    for itm in row:
        if type(itm)==type('a'):
           item = qs.fromUtf8(itm, size=-1)
           qs=QtCore.QString()
        else:
            item = str(itm)
        self.tableWidget.setItem(r, col, QtGui.QTableWidgetItem(item))
        col = col+1