主题:数据库操作与综合示例
在这最后一篇高级部分的文章中,我们将探讨如何在 PyQt 应用中进行数据库操作,并给出一个综合示例。
数据库操作
PyQt 提供了 QtSql
模块来进行数据库操作。这里我们以 SQLite 为例。
连接数据库
python
from PyQt5.QtSql import QSqlDatabase
def connect_to_database():
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("mydatabase.db")
if not db.open():
print("Cannot open database")
return False
return True
执行 SQL 查询
python
from PyQt5.QtSql import QSqlQuery
def execute_query():
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, text TEXT)")
query.exec_("INSERT INTO messages (text) VALUES ('Hello, world!')")
综合示例:聊天应用
在之前的基础上,我们将添加一个功能:将聊天记录保存到数据库。
python
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from PyQt5.QtCore import pyqtSignal
class ChatWindow(QMainWindow):
def __init__(self):
super().__init__()
self.init_db()
self.text_edit = QTextEdit()
self.send_button = QPushButton("Send")
self.send_button.clicked.connect(self.send_message)
layout = QVBoxLayout()
layout.addWidget(self.text_edit)
layout.addWidget(self.send_button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def init_db(self):
self.db = QSqlDatabase.addDatabase("QSQLITE")
self.db.setDatabaseName("chat.db")
if not self.db.open():
print("Cannot open database")
return
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, text TEXT)")
def send_message(self):
text = self.text_edit.toPlainText()
query = QSqlQuery()
query.prepare("INSERT INTO messages (text) VALUES (:text)")
query.bindValue(":text", text)
query.exec_()
这样,我们的聊天应用就可以将聊天记录保存到 SQLite 数据库中了。
这便是高级部分的最后一篇文章,希望这些内容能帮助你深入了解 PyQt 的高级功能。感谢你的阅读!