Tim*_*ald 47 python sqlite datetime
我一直四处寻找在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()
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
cur.execute('insert into new_test(curent_dt)values(?)',(temp))ValueError:参数属于不支持的类型
在进一步调查问题之后,我发现你必须使用尾随逗号来创建单个元素元组,例如 (temp,)
Ale*_*int 77
请注意下面"temp"之后添加的逗号:
cur.execute('insert into new_test (curent_dt) values (?)', (temp,))
Run Code Online (Sandbox Code Playgroud)
发生这种情况的原因是它(temp)
是一个整数但是(temp,)
包含长度为1的元组temp
.
小智 6
cur.execute('insert into new_test (curent_dt) values (? )', (temp))
Run Code Online (Sandbox Code Playgroud)
将此代码替换为
cur.execute('insert into new_test (curent_dt) values (? )', (temp,))
Run Code Online (Sandbox Code Playgroud)
在Python中,(temp)和(temp,)是两件事。(temp)只是一个普通变量,如整数,但(temp,)是一个元组。元组只能通过在每个元素之后提供逗号来获取,并且execute()方法仅在其第二个参数中采用元组。
归档时间: |
|
查看次数: |
29546 次 |
最近记录: |