我在PostgreSQL中有一个存储过程,可以使用SQLAlchemy进行查询,如下所示:
import sqlalchemy as sa
engine = sa.create_engine(...)
some_argument = 42
some_value = 99
for result in engine.execute(sa.select(['col_name'])
.select_from(sa.func.this_is_my_func_name(some_agument))
.where('this part does not work')):
print(result)
我想知道如何在代码中使用类似
col_name == some_value
的内容。以下是一些无效的内容:
.where('col_name' == some_value)
.where(sa.column('col_name') == some_value)
我还没有找到其他能完全满足我需求的东西。我可以:
.where(sa.text('col_name = :col_value'))
然后按
engine.execute(query, col_value=some_value)
,但这似乎不是正确的选择。在这一点上,我似乎应该这样做:sql = sa.text('''
SELECT
col_name
FROM
this_is_my_func_name(:argument)
WHERE
col_name = :value
''')
engine.execute(sql, argument=some_argument, value=some_value)
有什么更好的方法可以完成我的想法,还是我应该只钻全孔
sqlalchemy.text
? 最佳答案
原来我完全错了。
问题实际上是
sa.select(['col_name'])
这不是我们想要的。 Sqlalchemy猜测这是一个列名,但不确定,因此给了我一些警告。它必须是:
sa.select([sa.column('col_name')])
然后它将停止发出警告。但是无论哪种情况
.where(sa.column('col_name') == value)
是正确的方法。
关于python - 我如何在SQLAlchemy(核心)中创建一个文字where列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42912637/