Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan INSERT dengan Cekap ... PADA KEMASKINI KUNCI DUPLICATE dalam SQLAlchemy?
PADA DUPLICATE KEY UPDATE dalam SQLAlchemy
Soalan: Adakah terdapat cara ringkas untuk melakukan "INSERT .. . ON DUPLICATE KEY UPDATE" operasi menggunakan SQLAlchemy's ORM?
Jawapan:
SQLAlchemy termasuk sokongan terbina dalam untuk "KEMASKINI KUNCI PENDUPLICATE" untuk MySQL selepas versi 1.2. Untuk menggunakan fungsi ini, rujuk kepada penyelesaian yang disediakan di sini: https://stackoverflow.com/a/48373874/319066
Pendekatan Pernyataan SQL:
Untuk situasi umum atau pangkalan data bukan MySQL, anda boleh menggunakan penghias @compiles untuk memasukkan "ON DUPLICATE KEY KEMASKINI" dalam pernyataan SQL yang dihasilkan. Contoh disediakan di sini: https://github.com/somada141/sqlalchemy-insert-duplicate-update
Pendekatan ORM:
ORM SQLchemy tidak menyokong secara langsung "PADA KEMASKINI KUNCI PENDUA." Walau bagaimanapun, untuk kemas kini kunci utama, anda boleh menggunakan fungsi session.merge(), yang menyemak rekod sedia ada dan mengemas kininya dengan sewajarnya.
Pelaksanaan Tersuai untuk Kunci Bukan Utama:
Untuk situasi yang melibatkan kemas kini bukan kunci utama, anda boleh mencipta fungsi yang serupa dengan get_or_create() Django yang pertama menyemak rekod sedia ada dan melakukan kemas kini atau memasukkan dengan sewajarnya. Contoh fungsi sedemikian disediakan di sini:
def get_or_create(session, model, defaults=None, **kwargs): instance = session.query(model).filter_by(**kwargs).first() if instance: return instance else: params = {k: v for k, v in kwargs.items() if not isinstance(v, ClauseElement)} if defaults: params.update(defaults) instance = model(**params) return instance
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan INSERT dengan Cekap ... PADA KEMASKINI KUNCI DUPLICATE dalam SQLAlchemy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!