我正在尝试执行以下查询:
sqlite> select * from history where timeStamp >= "2016-09-15 13:05:00" and timeStamp < "2016-09-15 13:06:00";
timeStamp isOpen
------------------- ----------
2016-09-15 13:05:04 0
2016-09-15 13:05:09 0
2016-09-15 13:05:14 1
2016-09-15 13:05:19 1
2016-09-15 13:05:24 1
2016-09-15 13:05:29 1
2016-09-15 13:05:34 1
2016-09-15 13:05:39 0
2016-09-15 13:05:44 1
2016-09-15 13:05:49 1
2016-09-15 13:05:54 1
2016-09-15 13:05:59 0
从Postman我跑:{{origin}}:{{port}}/logs?from=201609151305&to=201609151306
在Python中,我将这些值翻译为:2016/09/15 13:05:00
和
2016/09/15 13:06:00
,它们将传递给我的帮助方法:
vals = (lowStr, upperStr)
query = 'select * from history where timeStamp >= ? and timeStamp < ?'
returnList = accessDB('SELECT',query,vals)
AccessDB然后执行以下操作:
def accessDB(operation, query, vals):
con = None
try:
con = sqlite3.connect('logs.db')
cur = con.cursor()
cur.execute(query, vals)
if operation == 'SELECT':
return cur.fetchall()
if operation == 'INSERT':
con.commit()
except sqlite3.Error as e:
print("Error %s:" % e.args[0])
sys.exit(1)
finally:
if con:
con.close()
然而,结果中没有返回任何内容。返回列表为空。我做错了什么?
答案 0 :(得分:1)
在您的示例SQL中,您使用的格式为
的日期时间YYYY-MM-DD HH:MM:SS
但是,在Python示例中,您使用的格式为
的日期时间YYYY/MM/DD HH:MM:SS
SQLite并未将此视为有效的日期格式。将/
更改为-
s(如何执行此操作取决于您的格式化方式)。