第一个小工具——数据查询统计

Posted guo126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个小工具——数据查询统计相关的知识,希望对你有一定的参考价值。

from PyQt5 import QtCore, QtWidgets
import sys
import pymysql
import dp_copy.rczy_sql as rczysql
import dp_copy.wccyr_sql as wccyrsql


class Ui_ANOVAWindow(object):


    def setupUi(self, ANOVAWindow):
        ANOVAWindow.setObjectName("ANOVAWindow")
        ANOVAWindow.resize(600, 400)
        self.label = QtWidgets.QLabel(ANOVAWindow)
        self.centralwidget = QtWidgets.QWidget(ANOVAWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label.setGeometry(QtCore.QRect(30, 40, 70, 30))  # 字体
        self.label.setMinimumSize(QtCore.QSize(71, 31))
        self.label.setObjectName("label")

        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(30, 80, 70, 30))
        self.label_2.setMinimumSize(QtCore.QSize(71, 31))
        self.label_2.setObjectName("label_2")

        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(300, 10, 70, 30))
        self.label_3.setMinimumSize(QtCore.QSize(71, 31))
        self.label_3.setObjectName("label_3")

        self.KeywordBox = QtWidgets.QLineEdit(self.centralwidget)
        self.KeywordBox.setGeometry(QtCore.QRect(130, 40, 120, 30))  # keyword框
        self.KeywordBox.setObjectName("KeywordBox")

        self.KeywordBox1 = QtWidgets.QLineEdit(self.centralwidget)
        self.KeywordBox1.setGeometry(QtCore.QRect(130, 80, 120, 30))  # keyword框
        self.KeywordBox1.setObjectName("KeywordBox1")

        self.result_KeywordBox = QtWidgets.QLineEdit(self.centralwidget)
        self.result_KeywordBox.setGeometry(QtCore.QRect(300, 40, 300, 200))  # keyword框
        self.result_KeywordBox.setObjectName("KeywordBox2")

        self.DataCButton = QtWidgets.QPushButton(self.centralwidget)  # 按钮
        self.DataCButton.setGeometry(QtCore.QRect(130, 120, 121, 30))
        self.DataCButton.setObjectName("DataCButton")

        ANOVAWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(ANOVAWindow)
        self.statusbar.setObjectName("statusbar")
        ANOVAWindow.setStatusBar(self.statusbar)

        self.retranslateUi(ANOVAWindow)
        QtCore.QMetaObject.connectSlotsByName(ANOVAWindow)

    def retranslateUi(self, ANOVAWindow):
        _translate = QtCore.QCoreApplication.translate
        ANOVAWindow.setWindowTitle(_translate("ANOVAWindow", "数据比对器"))  # 标题名
        self.label.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=" font-size:11pt;">项目名称</span></p></body></html>"))
        self.label_2.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=" font-size:11pt;">数据名称</span></p></body></html>"))
        self.label_3.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=" font-size:11pt;">查询结果</span></p></body></html>"))
        self.DataCButton.setText(_translate("ANOVAWindow", "查询"))

    def setupFunction(self):
        self.DataCButton.clicked.connect(self.get_sum)
        # self.get_sum()

    def get_sum(self):
        self.project_name = self.KeywordBox.text()  # 获取第一个文本框中的内容存入adder1
        self.data_name = self.KeywordBox1.text()  # 获取第二个文本框中的内容存入adder2
        print(self.project_name, self.data_name)
        if self.data_name:
            self.index(self.project_name, self.data_name)

    def index(self, project, name):
        print(project, name)
        if name not in wccyrsql.data_dict or name not in rczysql.data_dict:
            resp = 查询数据名错误
            print(resp)
            self.result_KeywordBox.setText(resp)
            return resp
        else:
            if project == wccyr:
                conn = pymysql.connect(host=172.17.33.195, port=3306, db=wccyr_test, user=wuchetest, password=wuchetest2019#, charset=utf8)
                dict = {name: rczysql.data_dict[name]}
            elif project == rczy:
                conn = pymysql.connect(host=172.17.33.195, port=3306, db=rczy, user=etims, password=etims2018#, charset=utf8)
                dict = {name: wccyrsql.data_dict[name]}
            else:
                resp = 项目名错误
                print(resp)
                self.result_KeywordBox.setText(resp)
                return resp
            cur = conn.cursor()
            sql = dict.get(name)[1]
            cur.execute(sql, dict.get(name)[0])
            resp = cur.fetchall()
            print(resp)
            self.result_KeywordBox.setText(str(resp))
            cur.close()
            return resp


if __name__ == "__main__":
    app =QtWidgets.QApplication(sys.argv)   # 创建一个QApplication,也就是你要开发的软件app
    ANOVAWindow = QtWidgets.QMainWindow()   # 创建一个ANOVAWindow,用来装载你需要的各种组件、控件
    ui = Ui_ANOVAWindow()
    ui.setupUi(ANOVAWindow)  # 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow
    ui.setupFunction()  # 执行类中的setupFunction方法
    ANOVAWindow.show()  # 执行QMainWindow的show()方法,显示这个QMainWindow
    sys.exit(app.exec_())  # 使用exit()或者点击关闭按钮退出QApplication
import datetime

current = datetime.datetime.strptime(datetime.datetime.now().strftime("%Y-%m-%d"), "%Y-%m-%d")
before_year = current - datetime.timedelta(days=365)
before_mouth = current - datetime.timedelta(days=30)
current_time = current.strftime("%Y-%m-%d %H:%M:%S")
before_year_time = before_year.strftime("%Y-%m-%d %H:%M:%S")
before_mouth_time = before_mouth.strftime("%Y-%m-%d %H:%M:%S")

org_seq = /root/蓝物流/

ndljyf_sql = ‘‘‘SELECT count(*), sum(b.payment_fee) FROM `tms_transport` a
 left join tb_tms_transport_fee b
 on a.id = b.transport_id
 where a.org_seq like %s
 and a.fact_reach_date BETWEEN %s and %s
 and a.status in (3, 4, 5)
 and a.del_flag = 0;‘‘‘


ndljydl_sql = ‘‘‘SELECT count(*) FROM tms_transport
 where org_seq like %s
 and fact_reach_date BETWEEN %s and %s
 and status in (3, 4, 5)
 and del_flag = 0;‘‘‘


ndljyf_parmas = [org_seq, before_year_time, current_time]
ndljydl_parmas = [org_seq, before_year_time, current_time]

data_dict = {
    ndljyf: [ndljyf_parmas, ndljyf_sql],
    ndljydl: [ndljydl_parmas, ndljydl_sql]
}
import datetime

current = datetime.datetime.strptime(datetime.datetime.now().strftime("%Y-%m-%d"), "%Y-%m-%d")
before_year = current - datetime.timedelta(days=365)
before_mouth = current - datetime.timedelta(days=30)
current_time = current.strftime("%Y-%m-%d %H:%M:%S")
before_year_time = before_year.strftime("%Y-%m-%d %H:%M:%S")
before_mouth_time = before_mouth.strftime("%Y-%m-%d %H:%M:%S")

org_seq = /root/蓝物流/%

ndljyf_sql = ‘‘‘SELECT count(*), sum(b.payment_fee) FROM `tms_transport` a
 left join tb_tms_transport_fee b
 on a.id = b.transport_id
 where a.org_seq like %s
 and  a.sign_date BETWEEN %s and %s
 and a.status in (3, 4, 5)
 and a.del_flag = 0;‘‘‘


ndljydl_sql = ‘‘‘SELECT count(*) FROM tms_transport
 where org_seq like %s
 and fact_reach_date BETWEEN %s and %s
 and status in (3, 4, 5)
 and del_flag = 0;‘‘‘


ndljyf_parmas = [org_seq, before_year_time, current_time]
ndljydl_parmas = [org_seq, before_year_time, current_time]

data_dict = {
    ndljyf: [ndljyf_parmas, ndljyf_sql],
    ndljydl: [ndljydl_parmas, ndljydl_sql]
}

 

以上是关于第一个小工具——数据查询统计的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VS中添加自定义代码片段——偷懒小技巧

统计代码块耗时的小工具stopwatch

统计代码块耗时的小工具stopwatch

《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片

python数据统计分析