在SQLAlchemy connection.execute 中使用命名參數
SQLAlchemy 的connection.execute 方法可以執行資料組地圖。最初使用字串格式實作以在查詢中包含參數,可以增強此方法以利用命名參數來提高效率和安全性。
修改過程
修改接受命名參數的程式碼,可以採取以下步驟:
利用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中文網其他相關文章!