使用sqlalchemy从金字塔框架插入sqlite3中的空日期

时间:2012-08-13 21:34:12

标签: python sqlite date sqlalchemy pyramid

python 2.7
pyramid 1.3a4
sqlalchemy 7.3
sqlite3.7.9

来自sqlite提示>我能做到:

insert into risk(travel_dt) values ('')
also
insert into risk(travel_dt) values(Null)

两者都会为risk.travel_dt生成一个空值,但是当我从金字塔中尝试这些travel_dt值时,Sqlalchemy会给我一个错误。

在第一种情况下,我得到sqlalchemy.exc.StatementError

  

SQLite日期类型仅接受python日期对象作为输入

在第二种情况下,我得到Null is not defined。当我使用“Null”时,我得到第一个案例错误

我为另一个关于空值的问题道歉:我已经阅读了很多材料,但一定是错过了一些简单的东西。谢谢你的帮助 Clemens Herschel

1 个答案:

答案 0 :(得分:1)

虽然您没有深入了解您正在使用的表定义或任何示例代码,但我猜这个问题是由于混淆NULL(数据库保留字)和None (Python保留字)。

错误消息告诉您需要使用有效的python date对象调用SQLA方法,而不是使用“Null”或“N”等字符串。

假设您有一个名为risk的表,其中包含一个名为travel_dt的列,您应该能够在该表中创建一个类似于以下内容的行:

risk.insert().values(travel_dt=None)

请注意,这只是一个代码段,您需要在engine上下文中执行此类调用,如SA Docs SQL Expression Language Tutorial中定义的那样。