Python + SQLite3 参数失败
Python + SQLite3 parameters failing
最后一个 cur.execute 语句中的参数无效。
下面的代码没有出错,但是 cur.fetchone() return 行值 (0,) 不应该出错
with conn:
flag = 0
today = (datetime.date.today() - datetime.timedelta(20)).strftime("%Y-%m-%d")
prev_prev_day = (datetime.date.today() - datetime.timedelta(22)).strftime("%Y-%m-%d")
cur = conn.cursor()
cur.execute("SELECT EXISTS(SELECT user, COUNT(user) cnt FROM logins GROUP BY user HAVING cnt > 1)")
if cur.fetchone()[0] == 1:
flag + 1
cur.execute("SELECT user, COUNT(user) cnt FROM logins GROUP BY user HAVING cnt > 1")
for item in cur.fetchall():
variables = (item[0], today, prev_prev_day,)
# problem in with this statement
cur.execute("SELECT COUNT(*) FROM logins WHERE user = ? AND seen_date BETWEEN ? AND ?", variables)
print cur.fetchone()
我得到了正确的结果:
cur.execute("SELECT COUNT(*) FROM logins WHERE user = ? AND seen_date BETWEEN '2015-07-11' AND '2015-07-13'", variables)
...只插入用户 = ?变量。
更新: 只需在参数之间切换即可。
这个:
variables = (item[0], today, prev_prev_day,)
应该是:
variables = (item[0], prev_prev_day, today)
最后一个 cur.execute 语句中的参数无效。
下面的代码没有出错,但是 cur.fetchone() return 行值 (0,) 不应该出错
with conn:
flag = 0
today = (datetime.date.today() - datetime.timedelta(20)).strftime("%Y-%m-%d")
prev_prev_day = (datetime.date.today() - datetime.timedelta(22)).strftime("%Y-%m-%d")
cur = conn.cursor()
cur.execute("SELECT EXISTS(SELECT user, COUNT(user) cnt FROM logins GROUP BY user HAVING cnt > 1)")
if cur.fetchone()[0] == 1:
flag + 1
cur.execute("SELECT user, COUNT(user) cnt FROM logins GROUP BY user HAVING cnt > 1")
for item in cur.fetchall():
variables = (item[0], today, prev_prev_day,)
# problem in with this statement
cur.execute("SELECT COUNT(*) FROM logins WHERE user = ? AND seen_date BETWEEN ? AND ?", variables)
print cur.fetchone()
我得到了正确的结果:
cur.execute("SELECT COUNT(*) FROM logins WHERE user = ? AND seen_date BETWEEN '2015-07-11' AND '2015-07-13'", variables)
...只插入用户 = ?变量。
更新: 只需在参数之间切换即可。
这个:
variables = (item[0], today, prev_prev_day,)
应该是:
variables = (item[0], prev_prev_day, today)