不能在任何数值运算中使用参数占位符?,也不能在字符串操作中使用相同的参数占位符(即,将通配符运算符连接到LIKE表达式)。在
因此,只需在将值绑定到con.execute或cursor.execute的params参数之前运行操作。另外,对于一个元组中的多个项不需要逗号结尾。在import datetime as dt
start_date = dt.datetime.strptime("2017-10-28", '%Y-%m-%d')
stop_date = dt.datetime.strptime("2017-10-30", '%Y-%m-%d')
rng = (stop_date - start_date).days
date_list = [(start_date + dt.timedelta(days=i)).strftime(format='%Y-%m-%d')
for i in range(rng+1)]
last_date_list = [(start_date + dt.timedelta(days=i+365)).strftime(format='%Y-%m-%d')
for i in range(rng+1)]
first_date_list = [(start_date + dt.timedelta(days=i+360)).strftime(format='%Y-%m-%d')
for i in range(rng+1)]
strSQL = """select distinct CAST(? as date format 'YYYY-MM-DD') as dateId, count(*)
from tableA
where last_date >= cast(? as date format 'YYYY-MM-DD')
and first_date >= cast(? as date format 'YYYY-MM-DD')
group by 1"""
for x, l, f in zip(date_list, last_date_list, first_date_list):
for row in session.execute(strSQL, (x, l, f)):
data.append(row)