Python在Sqlite3数据库中存储和检索数据

2024-09-30 22:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个similar question on SO基本上是问同一件事。不过,我似乎得到了一个错误的信息。让我解释一下。在

在Python中创建了一个存储test-ite3的小对象的思想:

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。所以,我把代码改成这样:

^{pr2}$

但现在它给了我一个错误信息:

  File "C:\Python27\lib\sqlite3\dbapi2.py", line 66, in convert_timestamp
    datepart, timepart = val.split(" ")
ValueError: need more than 1 value to unpack

问题是什么引起的?在


Tags: testimportidexecutedbdatetimedateconnect
1条回答
网友
1楼 · 发布于 2024-09-30 22:17:47

您将列声明为时间戳:

conn.execute('''CREATE TABLE TEST
            (
             ID     TEXT PRIMARY KEY     NOT NULL,
             DATE    TIMESTAMP
             );''')

改为DATE类型;Python根据列类型选择一个转换器,TIMESTAMP在这里触发了错误的转换器。在

演示:

^{pr2}$

或者,将SELECT查询中的类型名称包含在方括号中:

cur.execute('SELECT ID, DATE [date] from TEST')

相关问题 更多 >