如何定义SQLAlchemy函数并将其用作表字段的默认值?

时间:2016-02-17 08:20:43

标签: python sqlalchemy

documentation有这个例子:

t = Table('test', meta,
        Column('abc', MyType, default=func.generate_new_value(), primary_key=True)
)
  

如果使用Table.insert(),则func.generate_new_value()表达式将在标量SELECT语句的上下文中预先执行,新值将应用于后续INSERT,而在同时可用于ResultProxy.inserted_primary_key属性。

然而,它没有说明如何定义func.generate_new_value()

我需要定义一个函数,它将从所有abc行中选择max test元素(在我的情况下不是主键),然后将其递增1,然后将此值传递给希望SQLAlchemy可以在新行中插入它。

1 个答案:

答案 0 :(得分:1)

func.ANYTHING()实际上是从数据库中调用SQL函数。 '任何东西'是该函数的名称。因此,您必须直接在数据库上将函数定义为SQL函数。

另见: http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=func#sqlalchemy.sql.expression.func