最近、PythonでMySQLデータベースへ接続するコードを書いていたのですが、直接SQLを書くのが嫌になりSQLAlchemyを使用することにしました。 既存のMySQLへの接続処理をSQLAlchemyを使用するコードへと置き換えていたのですが、その際に、MySQLへのレコード登録時にキー重複が発生した場合は、該当レコードを更新する「UPSERT」をする必要がありました。 元々は、MySQLのduplicate on key update機能をSQLを書いて使用していたのですが、SQLを書かずにSQLAlchemyで実現する方法を調べてみたので、メモとして残しておきます。 UPSERTはSQLAlchemy 1.2系でサポートされている SQLAlchemyでは、1.2系からUPSERT (ON DUPLICATE KEY UPDATE)をサポートしているようです。 bitbucket