pyqt5打包附带存储数据库,示例讲解
时间: 2024-01-25 21:37:40 浏览: 150
PyQt5 + MySQL简单示例
在PyQt5中打包附带存储数据库有多种方法,其中一种是使用SQLite数据库。SQLite是一个轻量级的嵌入式数据库,它不需要独立的服务器进程,可以直接在应用程序中嵌入使用。下面是一个示例代码,演示了如何使用SQLite数据库在PyQt5应用程序中存储数据并打包应用程序。
```python
import sys
import os
import sqlite3
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from PyQt5.QtCore import QStandardPaths
from PyQt5.uic import loadUi
class MyApp(QMainWindow):
def __init__(self):
super(MyApp, self).__init__()
loadUi('mainwindow.ui', self)
self.setWindowTitle('MyApp')
self.db_path = self.init_db()
self.show()
def init_db(self):
db_dir = QStandardPaths.writableLocation(QStandardPaths.AppDataLocation)
if not os.path.exists(db_dir):
os.makedirs(db_dir)
db_path = os.path.join(db_dir, 'myapp.db')
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)''')
conn.commit()
conn.close()
return db_path
def add_data(self):
name = self.lineEdit.text()
conn = sqlite3.connect(self.db_path)
c = conn.cursor()
c.execute('''INSERT INTO mytable (name) VALUES (?)''', (name,))
conn.commit()
conn.close()
self.statusBar().showMessage('Data added successfully.')
def clear_data(self):
conn = sqlite3.connect(self.db_path)
c = conn.cursor()
c.execute('''DELETE FROM mytable''')
conn.commit()
conn.close()
self.statusBar().showMessage('Data cleared successfully.')
def show_data(self):
conn = sqlite3.connect(self.db_path)
c = conn.cursor()
c.execute('''SELECT * FROM mytable''')
rows = c.fetchall()
self.tableWidget.setRowCount(len(rows))
for i, row in enumerate(rows):
self.tableWidget.setItem(i, 0, QTableWidgetItem(str(row[0])))
self.tableWidget.setItem(i, 1, QTableWidgetItem(row[1]))
conn.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
myapp = MyApp()
sys.exit(app.exec_())
```
在上面的示例代码中,`init_db`方法用于初始化数据库,创建名为`mytable`的表格。`add_data`方法用于向表格中添加数据,`clear_data`方法用于清空表格中的数据,`show_data`方法用于显示表格中的数据。在应用程序启动时,`init_db`方法将创建一个名为`myapp.db`的SQLite数据库文件,并在其中创建`mytable`表格。应用程序启动后,可以通过在文本框中输入数据并单击“添加”按钮来向表格中添加数据。单击“清除”按钮将清空表格中的所有数据,单击“显示”按钮将显示表格中的所有数据。
在打包应用程序时,可以将SQLite数据库文件`myapp.db`一起打包。在应用程序启动时,可以将该文件从应用程序资源中提取出来,并将其放置在`QStandardPaths.writableLocation(QStandardPaths.AppDataLocation)`返回的路径下。这样,即使在没有安装SQLite数据库的计算机上运行应用程序,也可以正常地使用SQLite数据库。
阅读全文