sql >> データベース >  >> RDS >> Mysql

session.queryを使用してSQLAlchemyORMを介して結合テーブルを更新します

    バージョン0.7.4以降 sqlalchemy.sql.expression.update WHERE句で複数のテーブルを参照できます。これにより、次のような式を作成して実行できます。

    users.update().values(name='ed').where(
            users.c.name==select([addresses.c.email_address]).\
                        where(addresses.c.user_id==users.c.id).\
                        as_scalar()
            )
    

    (上記のリンクから直接の例)

    ValAyalが抱えている問題は、実際にはQuery.join()が原因です。 Query.update()ではサポートされていません 。残念ながら、0.9.1までは、これは上記で共有したValAyalのようなクエリをサイレントに生成していました。 0.9.1の変更ログノート 警告を発するように動作が変更されたことに注意してください:

    私たちは実際に今夜働いているところでこれに遭遇し、実際に私たちのコードが次の警告を発していることを発見しました(1.0ではエラーになると言っています):

    SAWarning: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called.  This will be an exception in 1.0
      self._validate_query_state()
    

    この例では、更新を選択に変換し、更新を1つのテーブルに変換することを選択しました。



    1. PDOでサーバー側のプリペアドステートメントをサポートしますか?

    2. SQLServerの概要

    3. SQL Serverのスカラー値関数が遅くなるのはなぜですか?

    4. mysqlデータベースからのPhpドロップダウンリストへの入力