Como excluir um registro por id no Flask-SQLAlchemy


128

Eu tenho userstabela no meu banco de dados MySql. Esta tabela tem id, namee agecampos.

Como posso excluir algum registro id?

Agora eu uso o seguinte código:

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

Mas não quero fazer nenhuma consulta antes da operação de exclusão. Há alguma maneira de fazer isso? Eu sei, posso usar db.engine.execute("delete from users where id=..."), mas gostaria de usar o delete()método

Respostas:


206

Você consegue fazer isso,

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

ou

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

Certifique-se de commitpara delete()entrar em vigor.


19
certifique-se de colocar db.session.commit()no final. onde o db: db = SQLAlchemy(app)
Ben

Você pode usar IN com esse método?
ram4nd

10
Aviso: deleteNão haverá cascata se você confiar em cascata no python / ORM. Você precisará consultar o objeto primeiro e depois excluir .
Nirvana-msu

5
o que aconteceria se Usernão existe?
Senaps 14/04/19

como podemos substituir / estender esse método delete ()? para uma classe Usuário definido em nossos models.py no aplicativo de balão.
Hossein


9

Outra solução possível, especialmente se você deseja excluir lotes

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.