Python-Version: 3.5 MySQL-Version: 5.6
Python PyMySQL führt die SQL-Anweisung aus und vergleicht die Zeit. Sie kann in MySQL reibungslos ausgeführt werden, bei der Ausführung in Python wird jedoch ein Fehler gemeldet.
Die Datenbanktabelle enthält die vom Anwesenheitsdrucker exportierten Anwesenheitsdaten . Gemäß der Mitarbeiternummer. Überprüfen Sie diejenigen, die zu spät kommen und früher gehen.
Überprüfen Sie diejenigen, die nach 7:30:00 Uhr und vor 17:30:00 Uhr eintreffen
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);
Ausführungsergebnis, erhalten Sie das Ergebnis reibungslos:
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)
Fehlermeldung:
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
多行语句试试用
进行包裹
看了楼上的评论,参见这个:https://stackoverflow.com/que...
Python里使用MySQL语句,不需要添加
%
来转义%
,Python的MySQL模块会默认添加转义字符。