您的位置:首页技术文章
文章详情页

python pymysql 执行比较时间的sql语句,在mysql中可以顺了执行,但是在python中执行为何报错?

【字号: 日期:2022-06-10 15:32:07浏览:44作者:猪猪

问题描述

python版本:3.5 mysql 版本:5.6python pymysql 执行比较时间的sql语句,在mysql中可以顺了执行,但是在python中执行报错;数据库表为考勤打机中导出的考勤数据,根据工号筛选出迟到及早退人员;在数据库中筛选出时间在7:30:00之后以及在17:30:00之前打卡的;

数据库表结构:

python pymysql 执行比较时间的sql语句,在mysql中可以顺了执行,但是在python中执行为何报错?

以下为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 pymysql 执行比较时间的sql语句,在mysql中可以顺了执行,但是在python中执行为何报错?

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:UsersgsdAppDataLocalProgramsPythonPython35python.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 literalProcess finished with exit code 1

问题解答

回答1:

多行语句试试用

''' ...... ...... '''

进行包裹

回答2:

看了楼上的评论,参见这个:https://stackoverflow.com/que...

Python里使用MySQL语句,不需要添加%来转义%,Python的MySQL模块会默认添加转义字符。

标签: Python 编程