Rak*_*esh 26 python sqlalchemy
我正在使用SQlAlchemy.我想删除有效存在于数据库中的所有记录,但我不想删除表/数据库.
我尝试使用以下代码.
con = engine.connect()
trans = con.begin()
con.execute(table.delete())
trans.commit()
Run Code Online (Sandbox Code Playgroud)
看起来,它不是非常有效的,因为我迭代数据库中存在的所有表.有人可以建议我这样做更好,更有效吗?
任何形式的帮助在这里都非常感激.
van*_*van 31
如果模型依赖于现有的数据库模式(通常使用autoload=True),则无法避免删除每个表中的数据.MetaData.sorted_tables派上用场:
for tbl in reversed(meta.sorted_tables):
engine.execute(tbl.delete())
Run Code Online (Sandbox Code Playgroud)
如果你的模型确实定义了完整的模式,那么没有什么比drop_all/ 更简单create_all(正如@jadkik94已经指出的那样).
此外,TRUNCATE无论如何不会对被引用的表起作用ForeignKeys,这显着地限制了使用.