在PyQt中,可以使用QTableView來顯示SQL查詢結果,并且可以將其導出為不同的文件格式,如CSV、Excel等。以下是一個簡單的示例,演示如何使用PyQt5和MySQL數據庫將QTableView中的數據導出為CSV文件:
pip install PyQt5 mysql-connector-python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QPushButton, QWidget
import mysql.connector
import csv
def fetch_data():
# 連接到數據庫
db = mysql.connector.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database'
)
cursor = db.cursor()
# 執行SQL查詢
query = 'SELECT * FROM your_table'
cursor.execute(query)
# 獲取查詢結果
data = cursor.fetchall()
# 關閉數據庫連接
cursor.close()
db.close()
return data
def export_to_csv(data, filename):
with open(filename, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
# 寫入表頭
writer.writerow(['Column1', 'Column2', 'Column3']) # 根據你的數據表結構修改列名
# 寫入數據行
writer.writerows(data)
app = QApplication(sys.argv)
window = QMainWindow()
# 創建一個QTableView控件
table_view = QTableView()
# 填充數據到QTableView
data = fetch_data()
table_view.setModel(QStandardItemModel(len(data), len(data[0]), parent=window)) # 根據你的數據表結構修改列數
for row in range(len(data)):
for col in range(len(data[0])):
table_view.setItem(row, col, QStandardItem(str(data[row][col])))
# 創建一個按鈕,用于導出數據到CSV文件
export_button = QPushButton('Export to CSV')
export_button.clicked.connect(lambda: export_to_csv(data, 'output.csv')) # 導出到名為'output.csv'的文件
# 創建一個垂直布局,并添加QTableView和按鈕
layout = QVBoxLayout()
layout.addWidget(table_view)
layout.addWidget(export_button)
# 創建一個中心窗口小部件,并設置布局
central_widget = QWidget()
central_widget.setLayout(layout)
window.setCentralWidget(central_widget)
# 顯示窗口
window.show()
# 運行應用程序
sys.exit(app.exec_())
請注意,你需要根據你的數據庫配置和數據表結構修改代碼中的連接信息、查詢語句和列名。此外,你可以根據需要調整導出文件的名稱和格式。