【发布时间】:2013-12-13 16:42:08
【问题描述】:
我已经通过 declarative_base 创建了一个模型:
Base = declarative_base()
class Record(Base):
__tablename__ = 'test'
id = Column(BigInteger, primary_key=True)
datefrom = Column(Date)
dateto = Column(Date)
active = Column(Boolean, index=True, default=True)
created = Column(DateTime, default=datetime.datetime.utcnow)
当我尝试将模块保存到 postgres 数据库时:
dfrom = datetime.datetime.strptime(somestring, '%d/%m/%Y').date()
dto = datetime.datetime.strptime(someotherstring, '%d/%m/%Y').date()
record = Record(datefrom=dfrom, dateto=dto)
session.add(record)
session.commit()
我收到以下错误:
(DataError) invalid input syntax for type date: \"\"\nLINE 1: ...'2013-11-26'::date, '2013-12-27'::date...\n ^\n 'INSERT INTO test (datefrom, dateto, active, created) VALUES (%(datefrom)s, %(dateto)s, %(active)s, %(created)s) RETURNING test.id' {'created': datetime.datetime(2013, 11, 27, 20, 12, 55, 716185), 'dateto': datetime.date(2013, 12, 27), 'datefrom': datetime.date(2013, 11, 26), 'active': True}
类似的错误发生在 sqlite 后端:
SQLite Date type only accepts Python date objects as input. (original cause: TypeError: SQLite Date type only accepts Python date objects as input.) 'INSERT INTO test (datefrom, dateto, active, created) VALUES (?, ?, ?, ?)' [{'dateto': datetime.date(2013, 12, 27), 'datefrom': datetime.date(2013, 11, 26)}]
那我做错了什么? datetime.date 对象不应该这样工作吗?
【问题讨论】:
-
datetime.datetime.strptime返回一个datetime对象。如果您只想要日期,请使用datetime.date.strptime。 -
啊,是的,对不起,我错误地复制了代码。当然我使用 ...strptime(...).date()。日期类没有 strptime AFAIK。
-
...那么,Blender 的评论是否帮助您解决了问题?你还在遇到这个问题吗?如果是这样,你能用你的新代码/错误更新问题吗?如果解决了,你能回答这个问题吗?
-
它没有。相关代码现已更新。
标签: python sqlite postgresql sqlalchemy