在SQL查询中使用通配符与mysql-connector-python Python 3.6

时间:2017-05-02 06:04:12

标签: python mysql mysql-connector-python

我有一个SQL查询,当复制粘贴到我的Python代码中时可以正常工作。有一个参数,我想在我的Python脚本中创建一个变量,

AND TimeStamp like '%2017-04-17%'

所以我在Python脚本中设置了一个变量:

mydate = datetime.date(2017, 4, 17) #Printing mydate gives 2017-04-17

并将查询中的行更改为:

AND TimeStamp like %s

首先,当我使用粘贴在查询中的日期副本运行脚本时:cursor.execute(query)没有错误,我可以使用cursor.fetchall()打印结果

当我将日期设置为变量mydate并使用%s并尝试运行脚本时,其中任何一个都会给我一个错误:

cursor.execute(query,mydate) #"You have an error in your SQL Syntax..."   
cursor.execute(query, ('%' + 'mydate' + '%',)) #"Not enough parameters for the SQL statement"
cursor.execute(query, ('%' + 'mydate' + '%')) #"You have an error in your SQL Syntax..."
cursor.execute(query, ('%' + mydate + '%')) #"must be str, not datetime.date

我只想'%2017-04-17%'所在的%s

2 个答案:

答案 0 :(得分:0)

如果MySQL表中的值是TIMESTAMP类型,那么您需要执行

SELECT whatever FROM table where TimeStamp beween '2017-04-17' and '2017-04-18'

创建了初始datetime.date值后,您需要在其上使用datetime.timedelta(days=1)

答案 1 :(得分:0)

您可以在执行之前格式化查询:

import datetime
mydate = datetime.date(2017,4,17)
query="select * from table where Column_A = 'A' AND TimeStamp like '%{}%'".format(mydate)
query

query将如下:

"select * from table where Column_A = 'A' AND TimeStamp like '%2017-04-17%'"

之后,您可以将其传递给光标进行查询:

cursor.execute(query)