我在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 of unsupported type
在进一步研究这个问题之后,我发现必须使用一个尾随逗号来创建一个元素元组,例如(temp,)
将此代码替换为
在Python中,(temp)和(temp,)是两个不同的东西。(temp)和integer一样只是一个普通变量,但(temp,)是一个元组。元组只能通过在每个元素后面提供逗号来获取,execute()方法只在其第二个参数中获取元组。
请注意在下面的“temp”后面添加了逗号:
发生这种情况的原因是
(temp)
是一个整数,而(temp,)
是一个包含temp
的长度元组。相关问题 更多 >
编程相关推荐