PyQt5 QtSql-Python是将Python和Qt框架(以及相关工具,如Qt Designer)结合起来使用的一种方法,它允许我们使用Python语言编写用Qt库创建的GUI应用程序,并在这些应用程序中使用SQL数据库。下面是使用PyQt5 QtSql-Python的完整攻略:
安装PyQt5和PyQt5-sql
PyQt5和PyQt5-sql是使用PyQt5 QtSql-Python开发GUI应用程序的两个最基本的依赖项。您可以使用pip安装它们:
pip install PyQt5 PyQt5-sql
连接到数据库
使用PyQt5 QtSql-Python连接到SQL数据库非常简单。下面的代码演示了如何使用SQLite数据库:
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
# 创建实例
db = QSqlDatabase.addDatabase('QSQLITE')
# 设置数据库文件名
db.setDatabaseName('mydb.db')
# 打开数据库连接
if db.open():
print('Opened!')
else:
print('Error opening connection: ', db.lastError().text())
# 关闭数据库连接
db.close()
执行SQL查询
在PyQt5 QtSql-Python中执行SQL查询与在标准Python中执行查询非常相似。下面是一个例子,用于执行一个简单的查询并显示结果:
# 创建数据库连接
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('mydb.db')
db.open()
# 准备查询
query = QSqlQuery()
query.prepare("SELECT name, age FROM users")
# 执行查询并处理结果
if query.exec_():
# 遍历结果集
while query.next():
name = query.value(0)
age = query.value(1)
print(f'{name}, {age}')
else:
print('Error executing query: ', query.lastError().text())
# 关闭数据库连接
db.close()
示例一:创建一个简单的联系人管理应用程序
以下是一个示例,演示如何使用PyQt5 QtSql-Python创建一个简单的联系人管理应用程序:
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QTableView
class ContactManager(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题
self.setWindowTitle('Contact Manager')
# 创建数据库连接
self.db = QSqlDatabase.addDatabase('QSQLITE')
self.db.setDatabaseName('contacts.db')
# 打开数据库连接
if not self.db.open():
QMessageBox.critical(None, 'Error', 'Could not open database')
# 创建模型并绑定到表格视图
self.model = QSqlTableModel(self)
self.model.setTable('contacts')
self.model.select()
self.tableView = QTableView()
self.tableView.setModel(self.model)
self.setCentralWidget(self.tableView)
if __name__ == '__main__':
app = QApplication([])
window = ContactManager()
window.show()
app.exec_()
示例二:创建一个简单的图书管理应用程序
以下是一个演示如何使用PyQt5 QtSql-Python创建一个简单的图书管理应用程序的示例:
from PyQt5.QtSql import QSqlDatabase, QSqlQueryModel
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QTableView
class BookManager(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题
self.setWindowTitle('Book Manager')
# 创建数据库连接
self.db = QSqlDatabase.addDatabase('QSQLITE')
self.db.setDatabaseName('books.db')
# 打开数据库连接
if not self.db.open():
QMessageBox.critical(None, 'Error', 'Could not open database')
# 创建模型并绑定到表格视图
self.model = QSqlQueryModel(self)
self.model.setQuery('SELECT title, author FROM books')
self.tableView = QTableView()
self.tableView.setModel(self.model)
self.setCentralWidget(self.tableView)
if __name__ == '__main__':
app = QApplication([])
window = BookManager()
window.show()
app.exec_()
以上就是使用PyQt5 QtSql-Python的完整攻略。通过这些示例,您应该已经掌握了如何创建使用SQL数据库的基本GUI应用程序。