[英]Passing two datetime parameters to SQL query in python
我一直在努力獲取針對此錯誤的解決方案,同時不斷獲取MySQL 1064。
我的代碼:
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)
您可以在文檔中看到相同的示例 。
好的,這是解決方案:
代替:
args=lastquerytime, lasttime
通過此:
args=(lastquerytime + lasttime)
使它成為一個統一的元組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.