2014-11-26 15 views
51

Mam tabelę users w mojej bazie danych MySql. Ta tabela ma pola id, name i age.Jak usunąć rekord przez identyfikator w Flask-SQLAlchemy

Jak mogę usunąć jakiś rekord przez id?

Teraz używam następujący kod:

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

Ale nie chcę, aby każde zapytanie przed usunięciem operację. Czy jest jakiś sposób to zrobić? Wiem, mogę użyć db.engine.execute("delete from users where id=..."), ale chciałbym użyć metody delete().

Dzięki!

Odpowiedz

103

Można to zrobić,

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

lub

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

Edit:

Upewnij się zobowiązać do delete() odniosły skutek.

+7

upewnij się umieścić '' 'db.session .commit() '' 'na końcu. gdzie db: '' 'db = SQLAlchemy (aplikacja)' '' – Ben

+0

Czy można używać IN za pomocą tej metody? – ram4nd

+0

Ostrzeżenie: Takie 'delete' nie będzie kaskadowane, jeśli będziesz polegał na kaskadowaniu w Pythonie/ORM. Będziesz musiał najpierw [zapytać o obiekt, a następnie usunąć] (https://stackoverflow.com/questions/19243964/sqlalchemy-delete-doesnt-cascade). –

Powiązane problemy