我正在阅读有关SQLAlchemy textual SQL和custom 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)
我知道这个特定的例子可能不需要用户定义的函数,但我希望得到一个适用于任何用户定义函数的一般答案。
答案 0 :(得分:1)
我认为你可能会对这些自定义函数的含义感到困惑。它们引用了SQL数据库中可用的函数,而不是您在Python中定义的函数。文档提供了NOW
或CURRENT_TIMESTAMP
的示例;这些都是通常由数据库服务器软件提供的功能。
许多数据库支持“存储过程”;例如,以下是stored procedures in PostgreSQL的文档。这些与您所描述的更相似:它们是可在查询过程中评估的函数。但是,在您的特定情况下,编写查询以直接检查字符串长度几乎肯定更容易。对于PostgreSQL或MySQL,该查询将是:
select * from users where char_length(username) < 5