我有一个为PostgreSQL方言编写的SQLAlchemy实体,它使用server_default=func.clock_timestamp()
:
row_created = sa.Column('row_created_', sa.DateTime(timezone=True), server_default=func.clock_timestamp(), nullable=False)
字符串
我还需要将它与SQLite一起使用,这会抛出一个错误:
sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)未知函数:clock_timestamp()
如何使用SQLAlchemy实现这一点?是否只为SQLite定义server_default
?仅为特定方言有条件地添加整个列?以某种方式使clock_timestamp()
为SQLite所知(我不关心函数会做什么,只要它不会失败)?
2条答案
按热度按时间ne5o7dgx1#
您可以用途:
text("CURRENT_TIMESTAMP")
服务器默认值:字符串
这将使用以下SQL创建一个表:
PostgreSQL:
型
SQLite:
型
如果必须在PostgreSQL上使用
clock_timestamp()
,可以将服务器默认值设置为:型
波斯特格雷斯
型
方铅矿
型
您也可以使用“default”使其在两个数据库上都工作。
型
hpxqektj2#
我从我的一个同事那里得到了一个提示,我最终使用了它,它对postgresql和sqlite都很好用。
字符串
afaik它与func.clock_timestamp()相同,但clock_timestamp()是特定于postgresql的,并且now()由几个DB支持。