我正在尝试将时间插入我的数据库,但是当我打印我插入的内容时,它是不正确的。我在将时间变量插入数据库之前打印了它,它是“12:01:09.149059”。当我使用 strftime 时它工作正常,但我因为时间关闭而切换。
from datetime import datetime
time = str(datetime.now().time())
cur.execute("insert into apple values (?,?,?)",(price,time,date))
con.commit()
#prints:
>>>('132.75', "<method 'time' of 'datetime.datetime' objects>", 'Apr 27, 2015')
答案 0 :(得分:2)
您正在尝试将Python方法对象转换为字符串,该字符串默认为其表示形式,您不需要。试试这个:
from datetime import datetime
time = datetime.now().strftime("%B %d, %Y %I:%M%p")
cur.execute("insert into apple values (?,?,?)",(price,time,date))
con.commit()
#prints:
>>>('132.75', "Apr 27, 2015 09:38AM", 'Apr 27, 2015')
答案 1 :(得分:0)
sqlite3
模块已经为datetime.datetime
个对象提供了适配器。您可以按原样传递datetime.datetime
,datetime.date
个对象:
>>> import sqlite3
>>> from datetime import datetime, timezone
>>> db = sqlite3.connect(':memory:')
>>> db.execute('select ?', (datetime.now(timezone.utc),)).fetchone()
('2015-04-27 20:22:26.951841+00:00',)
您可以define your own adapters if necessary例如传递datetime.time
个对象:
>>> from datetime import time as datetime_time
>>> def adapt_time(t):
... return str(t)
...
>>> sqlite3.register_adapter(datetime_time, adapt_time)
>>> db = sqlite3.connect(':memory:')
>>> db.execute('select ?', (datetime.now(timezone.utc).time(),)).fetchone()
('20:24:00.867221',)
将日期和时间存储在一起(只需通过datetime
对象而不进行任何转换)。使用UTC时间或感知日期时间对象。