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

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)

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_())
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容