Bagaimana menghapus record dengan id di Flask-SQLAlchemy


128

Saya memiliki userstabel di database MySql saya. Tabel ini memiliki id, namedan agebidang.

Bagaimana saya bisa menghapus beberapa catatan id?

Sekarang saya menggunakan kode berikut:

user = User.query.get(id)
db.session.delete(user)
db.session.commit()

Tetapi saya tidak ingin membuat kueri apa pun sebelum menghapus operasi. Apakah ada cara untuk melakukan ini? Saya tahu, saya bisa menggunakan db.engine.execute("delete from users where id=..."), tapi saya ingin menggunakan delete()metode.

Jawaban:


206

Kamu bisa melakukan ini,

User.query.filter_by(id=123).delete()

atau

User.query.filter(User.id == 123).delete()

Pastikan commituntuk delete()mulai berlaku.


19
pastikan Anda meletakkannya db.session.commit()di akhir. dimana db: db = SQLAlchemy(app)
Ben

Bisakah Anda menggunakan IN dengan metode ini?
ram4nd

10
Peringatan: Hal deletetersebut tidak akan menurun jika Anda mengandalkan cascading di python / ORM. Anda perlu menanyakan objek terlebih dahulu, lalu menghapus .
nirvana-msu

5
apa yang akan terjadi jika Usertidak ada?
senaps

bagaimana kita bisa mengganti / memperpanjang metode delete () ini? untuk kelas yang ditentukan Pengguna di models.py kita di aplikasi flask.
Hossein


9

Solusi lain yang mungkin khususnya jika Anda ingin menghapus batch

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.