use*_*949 5 sqlite datetime python-3.x
我正在尝试将时间插入到我的数据库中,但是当我打印插入的内容时,它是不正确的。我在将它插入数据库之前打印了时间变量,它是“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')
Run Code Online (Sandbox Code Playgroud)
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',)
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以定义自己的适配器,例如传递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',)
Run Code Online (Sandbox Code Playgroud)
将日期和时间存储在一起(只需传递datetime对象而不进行任何转换)。使用 UTC 时间或感知日期时间对象。
您正在尝试将 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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11930 次 |
| 最近记录: |