PyQt5 QtSql – Python

  • Post category:Python

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应用程序。