Sqlalchemy-core-parameterordered-updates
提供:Dev Guides
パラメータ順の更新
生SQLのUPDATEクエリにはSET句があります。 元のTableオブジェクトで指定された列の順序を使用するupdate()コンストラクトによってレンダリングされます。 したがって、特定の列を持つ特定のUPDATEステートメントは、毎回同じようにレンダリングされます。 パラメーター自体はPython辞書キーとしてUpdate.values()メソッドに渡されるため、他の固定された順序は利用できません。
場合によっては、SET句でレンダリングされるパラメーターの順序が重要です。 MySQLでは、カラム値の更新は他のカラム値の更新に基づいています。
次のステートメントの結果-
とは異なる結果になります-
MySQLのSET句は、行ごとではなく、値ごとに評価されます。 この目的のために、 preserve_parameter_order が使用されます。 2タプルのPythonリストは* Update.values()*メソッドへの引数として与えられます-
Listオブジェクトは辞書に似ていますが、順序付けられている点が異なります。 これにより、「y」列のSET句が最初にレンダリングされ、次に「x」列のSET句がレンダリングされます。