2014-10-30 45 views
3

我不能完全弄清楚這一點:我想從匹配查詢中的表中刪除所有記錄。有點像這樣。python + SQLAlchemy:用會話對象刪除

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

+0

你打電話給session.commit()嗎? – jkysam 2014-10-30 01:50:02

回答

8

在SQL鍊金術您要刪除您從數據庫中查詢得到的對象。這個你可以在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()