在 SQLAlchemy connection.execute 中使用命名参数
SQLAlchemy 的 connection.execute 方法可以执行 SQL 查询,同时将结果转换为数组地图。最初使用字符串格式实现以在查询中包含参数,可以增强此方法以利用命名参数来提高效率和安全性。
修改过程
修改接受命名参数的代码,可以采取以下步骤:
利用 SQLAlchemy 的text() 函数解析 SQL 字符串:
sql = text("SELECT users.fullname || ', ' || addresses.email_address AS title FROM users, addresses WHERE users.id = addresses.user_id AND users.name BETWEEN :x AND :y AND (addresses.email_address LIKE :e1 OR addresses.email_address LIKE :e2)")
将命名参数传递给execute() 函数:
conn.execute(sql, {"x": "m", "y": "z", "e1": "%@aol.com", "e2": "%@msn.com"})
命名参数的好处
使用命名参数提供了几个好处:
替代方法
或者,可以定义一个函数来包装执行功能并接受命名参数作为字典:
def sql_to_data(sql, values): result = [] connection = engine.connect() try: rows = connection.execute(sql, values) ... finally: connection.close() return result
通过这种方式,可以执行查询with:
sql = 'SELECT ...' data = {'user_id': 3} results = sql_to_data(sql, data)
此方法可以使用命名参数,同时保持原始代码的核心功能。
以上是如何将命名参数与 SQLAlchemy 的'connection.execute”一起使用以实现更安全、更易读的 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!