Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan INSERT dengan Cekap ... PADA KEMASKINI KUNCI DUPLICATE dalam SQLAlchemy?

Bagaimana untuk Melaksanakan INSERT dengan Cekap ... PADA KEMASKINI KUNCI DUPLICATE dalam SQLAlchemy?

Barbara Streisand
Lepaskan: 2024-11-25 15:14:11
asal
1092 orang telah melayarinya

How to Efficiently Perform INSERT ... ON DUPLICATE KEY UPDATE in 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
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan