77

我一直在四处走动,在 SQLite3 中存储日期和时间,目的是稍后使用比较检索记录,例如SELECT * WHERE date1 < date2

我最终放弃了尝试存储 datetime.datetime 对象并决定改用 UNIX 时间戳,因为它们只是一个 int 且易于操作,但我仍然遇到错误。

import sqlite3 as lite
import datetime
import time

conn = lite.connect('dispatcher.db')
cur = conn.cursor()
query = "create table if not exists new_test (curent_dt)"
cur.execute(query)
conn.commit()
now = datetime.datetime.now() - datetime.timedelta(minutes=60)
temp = int(time.mktime(now.timetuple()))
cur.execute('insert into new_test (curent_dt) values (? )', (temp))
conn.commit()
conn.close()

返回以下错误:

cur.execute('insert into new_test (curent_dt) values (?)', (temp)) ValueError: parameters are unsupported type

在进一步调查问题后,我发现您必须使用尾随逗号来创建单个元素元组,例如(temp,)

4

2 回答 2

123

请注意下面“temp”之后添加的逗号:

cur.execute('insert into new_test (curent_dt) values (?)', (temp,))

发生这种情况的原因是它(temp)是一个整数,但(temp,)它是一个长度为 1 的元组,其中包含temp.

于 2014-01-13T01:19:47.513 回答
-5

用这个改变那条线

cur.execute('插入 new_test (curent_dt) 值 (?)',str(temp))
于 2013-07-22T07:24:20.090 回答