versi python: 3.5 versi mysql: 5.6
python pymysql melaksanakan penyataan sql membandingkan masa Ia boleh dilaksanakan dengan lancar dalam mysql, tetapi ralat dilaporkan apabila dilaksanakan dalam python
Jadual pangkalan data adalah eksport data kehadiran . Mengikut nombor pekerja Skrin keluar mereka yang lewat dan keluar awal
Skrin keluar mereka yang masuk selepas 7:30:00 dan sebelum 17:30:00 dalam pangkalan data;
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);
Hasil pelaksanaan, dapatkan hasilnya dengan lancar:
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)
Mesej ralat:
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
Cuba gunakan pernyataan berbilang baris
Pakej
Selepas membaca ulasan di atas, lihat ini: https://stackoverflow.com/que...
Apabila menggunakan pernyataan MySQL dalam Python, tidak perlu menambah
%
来转义%
modul MySQL Python akan menambah aksara melarikan diri secara lalai.