用户定义在SQLAlchemy中的文本SQL中运行

时间:2017-03-06 15:32:29

标签: python sqlalchemy

我正在阅读有关SQLAlchemy textual SQLcustom functions的文档,而且我不清楚如何将这两者结合起来。

例如,我们说我有以下代码:

# relevant imports

def f(username):
    if len(username) < 5:
        return True
    else:
        return False

t = text("select * from users where f(username)")
db.session.execute(t)

我知道这个特定的例子可能不需要用户定义的函数,但我希望得到一个适用于任何用户定义函数的一般答案。

1 个答案:

答案 0 :(得分:1)

我认为你可能会对这些自定义函数的含义感到困惑。它们引用了SQL数据库中可用的函数,而不是您在Python中定义的函数。文档提供了NOWCURRENT_TIMESTAMP的示例;这些都是通常由数据库服务器软件提供的功能。

许多数据库支持“存储过程”;例如,以下是stored procedures in PostgreSQL的文档。这些与您所描述的更相似:它们是可在查询过程中评估的函数。但是,在您的特定情况下,编写查询以直接检查字符串长度几乎肯定更容易。对于PostgreSQL或MySQL,该查询将是:

select * from users where char_length(username) < 5