zoukankan      html  css  js  c++  java
  • python调用mysql存储过程

     
     

     数据库存储过程:

    #统计出勤
    drop procedure if exists jyf_test_py;
    DELIMITER ;;
    CREATE PROCEDURE jyf_test_py(IN date varchar(10),IN checkIn varchar(10),IN checkOut varchar(10))
    BEGIN
            DECLARE time decimal(4,2);    
          if TIME_TO_SEC(checkIn)<=TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut)<=TIME_TO_SEC("18:00") THEN
                    set time = FORMAT((TIME_TO_SEC("09:00") - TIME_TO_SEC(checkIn))/(60*60) + 7.5 - (TIME_TO_SEC("18:00") - TIME_TO_SEC(checkOut))/(60*60),2);
            ELSEIF TIME_TO_SEC(checkIn)<=TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut)>=TIME_TO_SEC("18:00") AND TIME_TO_SEC(checkOut)<=TIME_TO_SEC("18:40") THEN
                    set time = FORMAT((TIME_TO_SEC("09:00") - TIME_TO_SEC(checkIn))/(60*60) + 7.5 ,2);
        
            ELSEIF TIME_TO_SEC(checkIn)<=TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut)>TIME_TO_SEC("18:40") AND TIME_TO_SEC(checkOut)>TIME_TO_SEC("06:00") THEN
                    set time = FORMAT((TIME_TO_SEC("09:00") - TIME_TO_SEC(checkIn))/(60*60) + 7.5 + (TIME_TO_SEC(checkOut) - TIME_TO_SEC("18:40"))/(60*60),2);
            ELSEIF TIME_TO_SEC(checkIn)<=TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut)>TIME_TO_SEC("18:40") AND TIME_TO_SEC(checkOut)<TIME_TO_SEC("06:00") THEN
                    set time = FORMAT((TIME_TO_SEC("09:00") - TIME_TO_SEC(checkIn))/(60*60) + 7.5 + 5.33 + TIME_TO_SEC(checkOut)/(60*60),2);
        
            ELSEIF TIME_TO_SEC(checkIn)>TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut) <= TIME_TO_SEC("10:00") AND TIME_TO_SEC(checkOut)<=TIME_TO_SEC("18:40") AND TIME_TO_SEC(checkOut)>TIME_TO_SEC("06:00") THEN
                    set time = FORMAT((TIME_TO_SEC("12:00") - TIME_TO_SEC(checkTime))/(60*60) + 4.5  + (TIME_TO_SEC(checkOut) - TIME_TO_SEC("18:40"))/(60*60),2);
            ELSEIF TIME_TO_SEC(checkIn)>TIME_TO_SEC("09:00") AND TIME_TO_SEC(checkOut) <= TIME_TO_SEC("10:00") AND TIME_TO_SEC(checkOut)<=TIME_TO_SEC("18:40") AND TIME_TO_SEC(checkOut)<TIME_TO_SEC("06:00") THEN
                    set time = FORMAT((TIME_TO_SEC("12:00") - TIME_TO_SEC(checkTime))/(60*60) +4.5 + 5.33 + (TIME_TO_SEC(checkOut))/(60*60),2);
          end if;
          INSERT INTO `jyf_test`.`attendance`(`date`, `checkIn`, `checkOut`, `time`) VALUES (date, checkIn, checkOut, time);
            INSERT INTO `jyf_test`.`attendance_test`(`date`, `checkIn`, `checkOut`, `time`) VALUES (date, checkIn, checkOut, time);
        COMMIT;
    END ;;
    DELIMITER ;
    CALL jyf_test_py("2021-07-09","08:02","20:41");

     python调用存储过程

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    #pip install requests
    #pip install jsonpath
    #pip install mysql
    import requests
    from jsonpath import jsonpath
    import json
    import time
    import MySQLdb
    
    
    def getAttend(url,header):
        
        #data = {"account": "companyG", "adminUserCode": "000009", "companyCode": "53c3aeab8c1e11e9898400163e138319", "password": "c4ca4238a0b923820dcc509a6f75849b", "timestamp": "20191009112205", "sign": "55efce47806e2056adfa0cb769c274c8"} 
        
    
        #res = requests.post(url,json=data,headers=header)
        res = requests.get(url,headers=header).json()
    
    
        #print(res.headers)  # 响应头
        #print(data)  # 输出响应的文本
        signinTime = jsonpath(res, '$.data.signinTime')[0][0:-3]
        signoutTime = jsonpath(res, '$.data.signoutTime')[0][0:-3]
        date = time.strftime("%Y-%m-%d", time.localtime())
        return date,signinTime,signoutTime
    
    def CallProc(date,signinTime,signoutTime):
        conn = MySQLdb.connect(host='127.0.0.1',user='name',passwd='password',db='jyf_test')
        cur =conn.cursor()
        cur.callproc('jyf_test_py',(date,signinTime,signoutTime))
        conn.commit()
        cur.close()
        conn.close();
    
    url = 'https://127.0.0.1/attend/current-sign-status'
    header = {"authorization": "Basic MTUxMTIzMTk6MzQ2NTE1YmU4MTkwZDdiNDA2NWJlODMwMzRiY2Q5NDQ="}
    
    #获取日期、签到时间、签退时间
    date,signinTime,signoutTime = getAttend(url,header)
    print(date,signinTime,signoutTime)
    #print(type(date),type(signinTime),type(signoutTime))
    #调用存储过程
    if not (signinTime is None) and not (signoutTime is None):
        CallProc(date,signinTime,signoutTime)
  • 相关阅读:
    单例模式
    js事件
    oracle_to_excel
    jquery_2
    jquery_1
    4.linux 复制,删除,重命名
    一个tomcat下部署多个springboot项目
    3.centos7 安装oracle
    桥接模式
    组合模式
  • 原文地址:https://www.cnblogs.com/ai594ai/p/14991353.html
Copyright © 2011-2022 走看看