代码拉取完成,页面将自动刷新
同步操作将从 PyQt5/PyQt 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on 2018年5月15日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@email: 892768447@qq.com
@file: SqlQuery
@description:
"""
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget, QMessageBox, QTableWidgetItem
from sqlalchemy.engine import create_engine
from sqlalchemy.ext.declarative.api import declarative_base
from sqlalchemy.orm.session import sessionmaker
from sqlalchemy.sql.expression import and_
from sqlalchemy.sql.schema import Column
from sqlalchemy.sql.sqltypes import Integer, Text
from Lib.mainui import Ui_Form
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
# engine = create_engine('mysql+mysqldb://root@localhost:3306/tourist?charset=utf8')
engine = create_engine('sqlite:///Data/data.sqlite3', echo=True) # echo 表示开启命令显示
Base = declarative_base()
class Tourist(Base):
__tablename__ = 'tourist'
id = Column(Integer, primary_key=True)
name = Column(Text)
license = Column(Text)
flightnumber = Column(Text)
flightdate = Column(Text)
seatnumber = Column(Text)
boardingport = Column(Text)
no = Column(Text)
departurestation = Column(Text)
destinationstation = Column(Text)
class Window(QWidget, Ui_Form):
def __init__(self, *args, **kwargs):
super(Window, self).__init__(*args, **kwargs)
self.setupUi(self)
# sql的拼接字段
self.sql = {}
# 数据库连接
self.session = sessionmaker(bind=engine)()
@pyqtSlot()
def on_pushButtonQuery_clicked(self):
"""查询按钮"""
self.applyName()
self.applySeat()
self.applyLicense()
self.applyPort()
if not self.sql:
return QMessageBox.warning(self, '提示', '没有进行任何输入')
# 清空数据
self.tableWidget.clear()
# 重新设置表头
self.tableWidget.setHorizontalHeaderLabels(
['编号', '姓名', '证件号', '航班号', '航班日期', '座位号', '登机口', '序号', '出发地', '目的地'])
# 根据选择的字段进行并列查询
rets = self.session.query(Tourist).filter(
and_(*(key == value for key, value in self.sql.items()))).all()
if not rets:
return QMessageBox.information(self, '提示', '未查询到结果')
self.tableWidget.setRowCount(len(rets))
# 根据查询结果添加到表格中
for row, tourist in enumerate(rets):
self.tableWidget.setItem(row, 0, QTableWidgetItem(str(tourist.id)))
self.tableWidget.setItem(
row, 1, QTableWidgetItem(str(tourist.name)))
self.tableWidget.setItem(
row, 2, QTableWidgetItem(str(tourist.license)))
self.tableWidget.setItem(
row, 3, QTableWidgetItem(str(tourist.flightnumber)))
self.tableWidget.setItem(
row, 4, QTableWidgetItem(str(tourist.flightdate)))
self.tableWidget.setItem(
row, 5, QTableWidgetItem(str(tourist.seatnumber)))
self.tableWidget.setItem(
row, 6, QTableWidgetItem(str(tourist.boardingport)))
self.tableWidget.setItem(row, 7, QTableWidgetItem(str(tourist.no)))
self.tableWidget.setItem(
row, 8, QTableWidgetItem(str(tourist.departurestation)))
self.tableWidget.setItem(
row, 9, QTableWidgetItem(str(tourist.destinationstation)))
def applyName(self):
"""姓名"""
if not self.checkBoxName.isChecked():
if Tourist.name in self.sql:
# 移除
self.sql.pop(Tourist.name)
# 更新或添加到字典里
else:
self.sql[Tourist.name] = self.lineEditName.text().strip()
def applySeat(self):
"""座位号"""
if not self.checkBoxSeat.isChecked():
if Tourist.seatnumber in self.sql:
# 移除
self.sql.pop(Tourist.seatnumber)
# 更新或添加到字典里
else:
self.sql[Tourist.seatnumber] = self.lineEditSeat.text().strip()
def applyLicense(self):
"""证件号"""
if not self.checkBoxLicense.isChecked():
if Tourist.license in self.sql:
# 移除
self.sql.pop(Tourist.license)
# 更新或添加到字典里
else:
self.sql[Tourist.license] = self.lineEditLicense.text().strip()
def applyPort(self):
"""登机口"""
if not self.checkBoxPort.isChecked():
if Tourist.boardingport in self.sql:
# 移除
self.sql.pop(Tourist.boardingport)
# 更新或添加到字典里
else:
self.sql[Tourist.boardingport] = self.lineEditPort.text().strip()
if __name__ == '__main__':
import sys
import cgitb
sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text')
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。