首页
学习
活动
专区
圈层
工具
发布

python pyqt5 操作sqlite

-- 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')

代码语言:javascript
复制
if not db.open():
    QMessageBox.critical(None,  ("无法打开数据库"),
    ( "无法建立到数据库的连接,这个例子需要SQLite 支持,请检查数据库配置。\n\n"
      "点击取消按钮退出应用。"),
        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)

代码语言:javascript
复制
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_())
下一篇
举报
领券