2010-07-23 6 views
7

dire que je reçois un exemple de modèle comme celui-ci:SQL Alchemy - Comment supprimer d'une instance de modèle?

instance = session.query(MyModel).filter_by(id=1).first() 

Comment puis-je supprimer cette ligne? Y a-t-il une méthode spéciale à appeler?

+0

Rappelez-vous d'utiliser .get (1) au lieu de filter_by (id = 1) .first(), si 'id' est la clé primaire! Il en résulte moins de hits dans la base de données. Lire: http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.get – MrOerni

Répondre

18

Ok je l'ai trouvé après des recherches plus poussées:

session.delete(instance) 
+1

+1 Génial, merci – Hubro

+0

Je pense que c'est mieux si vous supprimez par ID: MyModel.query.filter (MyModel.id == 123) .delete() Plus directe. Voir https://stackoverflow.com/questions/27158573/how-to-delete-a-record-by-id-in-flask-sqlalchemy –

0

Vous pouvez tirer une requête unique pour cela.

pour tous les enregistrements

db.session.query(Table_name).delete() 
db.session.commit() 

ici db est l'objet classe Flask SQLAlchemy. Il supprimera tous les enregistrements et si vous souhaitez supprimer des enregistrements spécifiques, essayez la clause filter_by dans la requête. ex.

pour valeur spécifique

db.session.query(Table_name).filter_by(id==123).delete() 
db.session.commit() 
Questions connexes