【发布时间】:2014-04-30 23:58:39
【问题描述】:
我知道这个similar question on SO 基本上是在问同样的事情。但是,我似乎收到一条错误消息。让我解释一下。
为了测试使用 Sqlite3 数据库存储和检索 Python 日期对象的想法,我创建了这个小测试脚本:
import sqlite3
import datetime
conn = sqlite3.connect("test.db")
conn.execute('''CREATE TABLE TEST
(
ID TEXT PRIMARY KEY NOT NULL,
DATE TIMESTAMP
);''')
conn.commit()
mydate = datetime.date(2014,4,28)
myid = 'test'
conn.execute("INSERT INTO TEST (ID,DATE)\
VALUES(?,?)",[myid,mydate])
conn.commit()
conn.close()
conn = sqlite3.connect("test.db")
cursor = conn.execute("SELECT ID,DATE from TEST")
for row in cursor:
retrievedDate = row[1]
print retrievedDate,type(retrievedDate)
conn.close()
代码有效,但检索到的日期在unicode。
我从上面的链接中发现,如果没有detect_types=sqlite3.PARSE_DECLTYPES 参数,sqlite 将返回 unicode。所以,我改变了这样的代码:
...
conn = sqlite3.connect("test.db",detect_types=sqlite3.PARSE_DECLTYPES)
cursor = conn.execute("SELECT ID,DATE from TEST")
for row in cursor:
retrievedDate = row[1]
print retrievedDate,type(retrievedDate)
...
但现在它给了我这个错误信息:
File "C:\Python27\lib\sqlite3\dbapi2.py", line 66, in convert_timestamp
datepart, timepart = val.split(" ")
ValueError: need more than 1 value to unpack
导致问题的原因是什么?
【问题讨论】:
标签: python python-2.7 datetime sqlite