Flask-SQLAlchemy'de id'ye göre kayıt nasıl silinir


128

Ben usersbenim MySQL veritabanında tablo. Bu tabloda id, nameve agealanları var.

Nasıl bazı kaydını silebilir id?

Şimdi şu kodu kullanıyorum:

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

Ancak silme işleminden önce herhangi bir sorgu yapmak istemiyorum. Bunu yapmanın bir yolu var mı? Biliyorum, kullanabilirim db.engine.execute("delete from users where id=...")ama delete()yöntemi kullanmak isterim .

Yanıtlar:


206

Bunu yapabilirsiniz,

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

veya

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

Emin olun commitiçin delete()etkili olması.


19
db.session.commit()sonuna koyduğunuzdan emin olun . db nerede: db = SQLAlchemy(app)
Ben

IN'i bu yöntemle kullanabilir misiniz?
ram4nd

10
Uyarı: deletePython / ORM'de basamaklamaya güvenirseniz, bu tür basamaklı olmayacaktır. Önce nesneyi sorgulamanız ve ardından silmeniz gerekir .
nirvana-msu

5
yoksa ne olur User?
senaps

bu delete () yöntemini nasıl geçersiz kılabilir / genişletebiliriz? flask uygulamasında models.py'de tanımlanan bir sınıf Kullanıcı için.
Hossein


9

Toplu olarak silmek istiyorsanız, özellikle başka bir olası çözüm

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.