我正在使用SQLAlchemy1.3连接到PostgreSQL9.6数据库(通过Psycopg)。你知道吗
我有一个非常,非常原始的Sql字符串,使用Psycopg2语法格式化,由于一些遗留问题,我无法修改它:
statement_str = SELECT * FROM users WHERE user_id=%(user_id)s
注意%(user_id)s
使用sqlalchemy连接,我可以很高兴地执行以下操作:
connection = sqlalch_engine.connect()
rows = conn.execute(statement_str, user_id=self.user_id)
而且效果很好。我得到了我的用户,一切都很好。你知道吗
现在,出于调试的目的,我想将带有%(user_id)s
参数的实际查询扩展为实际值。例如:如果user_id = "foo"
,那么获取SELECT * FROM users WHERE user_id = 'foo'
我见过很多例子使用^{str
。你知道吗
但是,在这个特殊的例子中,因为我使用的是更为特定于游标的语法%(user_id)
,所以我不能这样做。如果我尝试:
text(statement_str).bindparams(user_id="foo")
我得到:
This text() construct doesn't define a bound parameter named 'user_id'
所以我想我要找的是
conn.compile(statement_str, user_id=self.user_id)
但我没能得到。你知道吗
好吧,我想我明白了。你知道吗
SqlAlchemy的^{} +Psycopg的^{} 的组合似乎就是答案。你知道吗
我希望其他人觉得这有帮助
不知道这是不是你想要的,但这是你想要的。你知道吗
假设语句\u str实际上是一个字符串:
相关问题 更多 >
编程相关推荐