Flask-SQLAlchemyでIDを使用してレコードを削除する方法


128

私が持っているusers私のMySQLデータベースのテーブルを。このテーブルにはidnameおよびageフィールドがあります。

どうすればレコードを削除できidますか?

今、私は次のコードを使用します:

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

しかし、削除操作の前にクエリを実行したくありません。これを行う方法はありますか?知っています、は使えますがdb.engine.execute("delete from users where id=...")delete()メソッドを使いたいのですが。

回答:


206

あなたはこれを行うことができます、

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

または

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

が有効になるようにcommitdelete()てください。


19
db.session.commit()最後に置くことを確認してください。where db: db = SQLAlchemy(app)
Ben

この方法でINを使用できますか?
ram4nd 2017年

10
警告:deletepython / ORMでカスケードに依存している場合は、カスケードされません。最初にオブジェクトクエリし、次にを削除する必要があります
nirvana-msu 2018

5
User存在しない場合はどうなりますか?
セナプス

このdelete()メソッドをオーバーライド/拡張​​するにはどうすればよいですか?フラスコアプリのmodels.pyで定義されたクラスUserの場合。
Hossein


9

特にバッチ削除が必要な場合の別の可能な解決策

deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.