传递两个日期时间参数的SQL查询在python
我苦苦寻找此错误的解决方案,同时不断获得MySQL的1064传递两个日期时间参数的SQL查询在python
我的代码:
query = "SELECT iv_alert.sensorId, iv_alert.sensorAlertUUID,
iv_packetlog.packetData FROM iv_alert LEFT JOIN iv_packetlog ON
iv_alert.packetLogId = iv_packetlog.packetLogId WHERE
iv_packetlog.creationTime > %s AND iv_packetlog.creationTime <= %s"
args=lastquerytime, lasttime
cursor.execute(query,args)
产生以下错误:
_mysql_exceptions.ProgrammingError: (1064, 'You have an error in your
SQL syntax ; check the manual that corresponds to your MySQL server version for
the right syntax to use near \') AND iv_packetlog.creationTime <=
("\'2017-08-09 14:53:21\'",)\' at line 1')
与此同时,路过只有一个参数效果很好:
query = "SELECT iv_alert.sensorId, iv_alert.sensorAlertUUID,
iv_packetlog.packetData FROM iv_alert LEFT JOIN iv_packetlog ON
iv_alert.packetLogId = iv_packetlog.packetLogId WHERE
iv_packetlog.creationTime > %s"
args=lasttime
cursor.execute(query,args)
我在做什么错?请指教。
尝试增加周围的查询支架,使ARGS一个元组:
query = ("SELECT iv_alert.sensorId, iv_alert.sensorAlertUUID,"
"iv_packetlog.packetData FROM iv_alert LEFT JOIN iv_packetlog ON"
"iv_alert.packetLogId = iv_packetlog.packetLogId WHERE"
"iv_packetlog.creationTime > %s AND iv_packetlog.creationTime <= %s")
args = (lastquerytime, lasttime)
cursor.execute(query, args)
你可以看到同样的example的文件中。
谢谢你的回答。仍然有相同的错误(1064)。 –
@NickBabkin是否尝试使用'BETWEEN%s AND%s'而不是'iv_packetlog.creationTime>%s和iv_packetlog.creationTime droravr
不,我没有,因为我以前在GUI MySQL客户端运行这个查询,它运行良好,这意味着语法是正确的。 –
好吧,这里的解决方案:
相反的:
args=lastquerytime, lasttime
通这样的:
args=(lastquerytime + lasttime)
为了让一个统一的元组。
不知道它是否在将__%s__替换为__?__问号 – Nabin
后感谢您的回答。在getPCAP 光标 文件 “grabPCAPs.py”,管76,在 getPCAP() 文件 “grabPCAPs.py” 41行,:不幸的是,现在我得到这样的: 回溯(最近最后一次通话) .execute(query,args) 文件“C:\ Python27 \ lib \ site-packages \ MySQLdb \ cursors.py”,第159行,在 执行 query = query%db.literal(args) TypeError:not all在字符串格式化过程中转换的参数 –
忘记我的评论。这只是一个猜测:p – Nabin