python调用mysql数据库sql语句过长有问题吗_python pymysql 执行比较时间的sql语句,在mysql中可以顺了执行,但是在python中执行为何报错?...

博客讲述了Python 3.5使用pymysql执行比较时间的SQL语句时报错的问题。该SQL语句在MySQL 5.6中可正常执行,用于从考勤数据中筛选迟到早退人员。给出了数据库表结构、SQL语句、Python代码及报错信息,最后提出用三引号包裹多行语句的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问 题

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')

执行结果,顺利得到结果:

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')

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

解决方案

多行语句试试用

""" ......

......

"""

进行包裹

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值