SQLAlchemy 中用户定义的标量值函数

User defined scalar-valued functions in SQLAlchemy

假设我已经定义了一个 SQL 服务器函数 myfunc 它将一个整数作为输入并且 returns 一个这样的整数

CREATE FUNCTION myfunc
(@val as INTEGER)
RETURNS INTEGER
AS
BEGIN
    RETURN
        @val + 10
END

有没有办法在 SQLAlchemy 中调用这个函数? 我知道我不能像下面那样做,因为它不是公认的内置函数函数名称 ('myfunc' is not a recognized built-in function name.)

select(func.myfunc(x.c.mycolumn).label("my_column_plus_10"))

Scalar-valued UDF 必须在 SQL 服务器中使用 schema-qualified 名称调用。

CREATE FUNCTION myfunc
(@val as INTEGER)
RETURNS INTEGER
AS
BEGIN
    RETURN
        @val + 10
END
go
select myfunc(1) --fails
go
select dbo.myfunc(1) --succeeds

所以尝试:

select(func.dbo.myfunc(x.c.mycolumn).label("my_column_plus_10"))

每:

To call functions which are present in dot-separated packages, specify them in the same manner:

>>> print(func.stats.yield_curve(5, 10))

stats.yield_curve(:yield_curve_1, :yield_curve_2)

sqlalchemy.sql.expression.func

这是一个 schema-qualified UDF 而不是“dot-separated 包”,但生成的 SQL 看起来是一样的。