-- coding: utf-8 --
'''
【簡介】
PyQt5中 處理database 例子
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtSql import QSqlDatabase , QSqlQuery
def createDB():
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('./db/database.db')
if not db.open():
QMessageBox.critical(None, ("無法打開數(shù)據(jù)庫"),
( "無法建立到數(shù)據(jù)庫的連接,這個(gè)例子需要SQLite 支持,請(qǐng)檢查數(shù)據(jù)庫配置失球。\n\n"
"點(diǎn)擊取消按鈕退出應(yīng)用浑娜。"),
QMessageBox.Cancel )
return False
query = QSqlQuery()
query.exec_("create table people(id int primary key, name varchar(20), address varchar(30))")
query.exec_("insert into people values(1, 'zhangsan1', 'BeiJing')")
query.exec_("insert into people values(2, 'lisi1', 'TianJing')")
query.exec_("insert into people values(3, 'wangwu1', 'HenNan')")
query.exec_("insert into people values(4, 'lisi2', 'HeBei')")
query.exec_("insert into people values(5, 'wangwu2', 'shanghai')")
db.close()
return True
if name == 'main':
app = QApplication(sys.argv)
createDB()
sys.exit(app.exec_())
-- coding: utf-8 --
'''
【簡介】
PyQt5中 處理database 例子
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
from PyQt5.QtCore import Qt
def initializeModel(model):
model.setTable('people')
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
model.setHeaderData(0, Qt.Horizontal, "ID")
model.setHeaderData(1, Qt.Horizontal, "name")
model.setHeaderData(2, Qt.Horizontal, "address")
def createView(title, model):
view = QTableView()
view.setModel(model)
view.setWindowTitle(title)
return view
def addrow():
ret = model.insertRows(model.rowCount(), 1)
print('insertRows=%s' % str(ret))
def findrow(i):
delrow = i.row()
print('del row=%s' % str(delrow))
if name == 'main':
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('./db/database.db')
model = QSqlTableModel()
delrow = -1
initializeModel(model)
view1 = createView("Table Model (View 1)", model)
view1.clicked.connect(findrow)
dlg = QDialog()
layout = QVBoxLayout()
layout.addWidget(view1)
addBtn = QPushButton("添加一行")
addBtn.clicked.connect(addrow)
layout.addWidget(addBtn)
delBtn = QPushButton("刪除一行")
delBtn.clicked.connect(lambda: model.removeRow(view1.currentIndex().row()))
layout.addWidget(delBtn)
dlg.setLayout(layout)
dlg.setWindowTitle("Database 例子")
dlg.resize(430, 450)
dlg.show()
sys.exit(app.exec_())