如何将datetime传递给sqlite

时间:2016-12-16 20:09:08

标签: datetime pysqlite

我试图在稍后的查询中使用sqlite查询的结果。在下面的代码中,请注意考试[1]是一个字符串,并且' endtime'打印正确。但是,我似乎无法将其传递给db.execute语句。更令人困惑的是,如果我从python命令行执行相同的操作(将endtime设置为string并调用db.execute语句),它将按预期工作。关于我缺少什么的任何想法。

exam_list包含两个日期时间字符串和一个uuid。我也尝试将值传递给(kiosk,考试[1],考试[1],),结果相同。

   for exam in exam_list:
     print "%s\t%s\n%s\t%s\n%s\t%s\n" % (exam[0],type(exam[0]),exam[1],type(exam[1]),exam[2],type(exam[2]),)
     endtime = exam[1]
     print "Endtime is %s" % (endtime)
     db.execute("""select sessionid, examtype, email from schedule where stationid = ? and iestart < ? and ieend > ? and status = 'Pending' """, (kiosk, endtime, endtime,))

产生

2016-12-16 14:45:00 <type 'str'>
2016-12-16 19:30:00 <type 'str'>
48f7a832-cf8a-47c2-b3b0-b279fc23f932    <type 'str'>

Endtime is 2016-12-16 19:30:00
Traceback (most recent call last):
  File "checkschedule.py", line 62, in <module>
    check_overlap(kiosk)
  File "checkschedule.py", line 40, in check_overlap
    db.execute("""select sessionid, examtype, email from schedule where stationid = ? and iestart < ? and ieend > ? and status = 'Pending' """, (kiosk, endtime, endtime,))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

1 个答案:

答案 0 :(得分:0)

我想我已经弄明白了。我错过了&#34;参数0&#34;位。时间的事情结果证明是一个红鲱鱼。这里的问题是&#39; kiosk&#39;作为元组传递给函数。解决方案是指定kiosk [0]。