MySqlデータベースにusers
テーブルがあります。このテーブルには、id
、name
、およびage
フィールドがあります。
id
でレコードを削除するにはどうすればよいですか?
ここで、次のコードを使用します。
user = User.query.get(id)
db.session.delete(user)
db.session.commit()
しかし、削除操作の前にクエリを作成したくありません。これを行う方法はありますか? db.engine.execute("delete from users where id=...")
を使用できますが、delete()
メソッドを使用したいと思います。
あなたはこれを行うことができます、
User.query.filter_by(id=123).delete()
または
User.query.filter(User.id == 123).delete()
delete()
を有効にするためにcommit
を確認してください。
別のオプションを共有したいだけです:
# mark two objects to be deleted
session.delete(obj1)
session.delete(obj2)
# commit (or flush)
session.commit()
http://docs.sqlalchemy.org/en/latest/orm/session_basics.html#deleting
この例では、次のコードが正常に機能します。
obj = User.query.filter_by(id=123).one()
session.delete(obj)
session.commit()
特にバッチ削除が必要な場合の別の可能な解決策
deleted_objects = User.__table__.delete().where(User.id.in_([1, 2, 3]))
session.execute(deleted_objects)
session.commit()