首頁  >  問答  >  主體

python pymysql 執行比較時間的sql語句,在mysql中可以順了執行,但是在python中執行為何報錯?

python版本:3.5 mysql 版本:5.6
python pymysql 執行比較時間的sql語句,在mysql中可以順了執行,但是在python中執行報錯;
資料庫表為考勤打機中導出的考勤數據,根據工號篩選出遲到及早退人員;
在資料庫中篩選出時間在7:30:00之後以及在17:30:00之前打卡的;


資料庫表結構:


#以下為sql語句

select * from kaoqinjilu WHERE gonghao = 6063 and date_format(datatime,'%Y-%m-%d %H:%i:%s')>DATE_ADD(date_format(datatime,'%Y-%m-%d'),INTERVAL "7:30:00" HOUR_SECOND)
and date_format(datatime,'%Y-%m-%d %H:%i:%s')<DATE_ADD(date_format(datatime,'%Y-%m-%d'),INTERVAL "17:30:00" HOUR_SECOND);

執行結果,順利得到結果:


#python程式碼:

import pymysql.cursors
#连接数据库
connect = pymysql.connect(host='127.0.0.1',port=3306, user='root', passwd='111111', db='test',charset='utf8',)
#获取游标
cursor = connect.cursor()

sql = "select * from kaoqinjilu WHERE gonghao = 6063 AND date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')>DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '7:30:00' HOUR_SECOND)
and date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')<DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '17:30:00' HOUR_SECOND)"
cursor.execute(sql)

#提交
connect.commit()

for row in cursor.fetchall():
    print(row)
print('迟到早退人数',cursor.rowcount)

報錯訊息:

C:\Users\gsd\AppData\Local\Programs\Python\Python35\python.exe F:/100lainxiti/考勤查询.py
  File "F:/100lainxiti/考勤查询.py", line 7
    sql = "select * from kaoqinjilu WHERE gonghao = 6063 AND date_format(datatime,'%%Y-%%m-%%d %%H:%%i:%%s')>DATE_ADD(date_format(datatime,'%%Y-%%m-%%d'),INTERVAL '7:30:00' HOUR_SECOND)
                                                                                                                                                                                        ^
SyntaxError: EOL while scanning string literal

Process finished with exit code 1
曾经蜡笔没有小新曾经蜡笔没有小新2663 天前1474

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-07-04 13:45:45

    多行語句試試用

    """ ...... 
        ...... 
    """

    進行包裹

    回覆
    0
  • 三叔

    三叔2017-07-04 13:45:45

    看了樓上的評論,請看這個:https://stackoverflow.com/que...

    Python裡使用MySQL語句,不需要加入%來轉義%,Python的MySQL模組會預設加入轉義字元。

    回覆
    0
  • 取消回覆