使用命名参数编译sqlalchemy语句

时间:2012-02-25 15:45:09

标签: sqlalchemy

这是Convert sqlalchemy core statements to raw SQL without a connection?的后续行动。我想使用带有命名参数的insert,但不通过SQLA执行它们。

我有一个如下定义的插入语句:

table = Table("table", meta_data,
             Column("id", Integer, auto_increment=True, primary_key=1),
             Column("name", String),
             Column("full_name", String))
params = {"full_name": "some_name", "name": "some_other_name"}
stmt = sqlalchemy.sql.expression.insert(table).values(params)
c_stmt = stmt.compile(dialect=dialect)

我稍后会通过DBAPI连接执行此语句。如何确保生成的sql字符串与我的参数集之间的位置一致?

1 个答案:

答案 0 :(得分:0)

大多数SQL引擎(全部?)支持命名绑定参数以及位置参数,SA提供了一个接口(bindparam,足够有趣)。 SA Docs有一个部分,其中包含可能满足您需求的示例。当然,这些示例假设您正在使用SA执行查询,因此您需要根据您的用例解释它们。