如何在python中的表视图中显示数据库中的数据

时间:2014-01-08 10:35:00

标签: python pyside

我是python的新手并且遇到了问题,请任何人帮我解决这个问题。要求是我创建了一个sqlite数据库,并创建了一个表,并且还插入了值,但问题是我没有得到如何在python的表视图中显示数据库中的数据,所以请帮助我从这.....提前谢谢..

db_con = sqlite3.Connection
db_name = "./patientData.db"
createDb = sqlite3.connect(db_name)
queryCurs = createDb.cursor()
queryCurs.execute('''CREATE TABLE IF NOT EXISTS PATIENT
    (NAME TEXT NOT NULL, ID INTEGER PRIMARY KEY, AGE INTEGER NOT NULL, GENDER TEXT NOT NULL , EYE_TYPE TEXT NOT NULL)''')

pName = self.patientEdit.text()
pId =self.patientidEdit.text()
#pId1 = int(pId)
pAge = self.ageEdit.text()
#pAge1 = int(pAge)
pGender = self.patientgend.text()
pEye_type = self.eyeTypeEdit.text()
queryCurs.execute('''INSERT INTO PATIENT(NAME,ID,AGE, GENDER,EYE_TYPE) VALUES(?, ?, ?, ?, ?)''',(pName, pId, pAge, pGender, pEye_type))
print ('Inserted row')
createDb.commit()

现在我怎么能在tableview / listview中显示数据,任何示例代码也很有帮助

2 个答案:

答案 0 :(得分:6)

这是一个简短的,虽然完整的例子,说明如何达到预期的结果。 诀窍是定义QSqlQueryModel并将其传递给QTableView;这样就可以使用PyQt4 SQL模块而不是sqlite3模块,表格可以自动循环查询结果。

from PyQt4.QtSql import QSqlQueryModel,QSqlDatabase,QSqlQuery
from PyQt4.QtGui import QTableView,QApplication
import sys

app = QApplication(sys.argv)

db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("patientData.db")
db.open()

projectModel = QSqlQueryModel()
projectModel.setQuery("select * from patient",db)

projectView = QTableView()
projectView.setModel(projectModel)

projectView.show()
app.exec_()

答案 1 :(得分:0)

我知道这个问题已经有很长时间了,可以接受的问题是PyQt4。由于API在PyQt5上有所更改,希望我的回答可以对使用PyQt5的人有所帮助。

from PyQt5 import QtWidgets, QtSql
# connect to postgresql
db = QtSql.QSqlDatabase.addDatabase("QPSQL")
db.setHostName(**)
db.setDatabaseName(**)
db.setPort(**) # int
db.setUserName(**)
db.setPassword(**)

# create tableview
tableView = QtWidgets.QTableView()

# create sqlquery
query = QtSql.QSqlQuery()
result = query.exec_("""select * from "table" """)
if result:
    model = QtSql.QSqlTableModel(db=db)
    model.setQuery(query)
    tableView.setModel(model)
    tableView.show()