繁体   English   中英

python + SQLAlchemy:使用 Session 对象删除

[英]python + SQLAlchemy: deleting with the Session object

我不太明白这一点:我想从匹配查询的表中删除所有记录。 有点像这样。

engine = sqlalchemy.create_engine(string)
meta = MetaData(bind=engine)
meta.reflect(bind=engine, schema='myschema')

Base = automap_base(metadata=meta)
Base.prepare(engine, reflect=True)
Classes = Base.classes

Session = sessionmaker(bind=engine)
session = Session()

session.delete(plays.record_id == '123')

但这不起作用。 这里的想法是什么? 我得到的错误是:

error in parsing record ID 020087: Class 'sqlalchemy.sql.elements.BinaryExpression' is not mapped

在 SQL Alchemy 中,您正在删除通过查询从数据库中获得的对象。 您可以通过 2 种方式执行此操作:

使用查询删除(将只发出一个DELETE语句):

session.query(User).filter(User.id==7).delete()
session.commit()

删除查询返回的对象实例(将发出 2 条语句:首先是SELECT ,然后是DELETE ):

obj=session.query(User).filter(User.id==7).first()
session.delete(obj)
session.commit()

删除所有记录

#for all records
session.query(Model).delete()
session.commit()

删除的单行

如果要删除特定记录,请在查询中尝试filter子句。 前任。

#for specific value
session.query(Model).filter(Model.id==123).delete()
session.commit()

按对象删除单条记录

record_obj = session.query(Model).filter(Model.id==123).first()
session.delete(record_obj)
session.commit()

https://flask-sqlalchemy.palletsprojects.com/en/2.x/queries/#deleting-records

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM