【发布时间】:2017-06-21 21:04:40
【问题描述】:
我正在使用 SQLAlchemy。我想有效地删除数据库中存在的所有记录,但我不想删除表/数据库。
我尝试了以下代码。
con = engine.connect()
trans = con.begin()
con.execute(table.delete())
trans.commit()
看起来,这不是一个非常有效的方法,因为我正在遍历数据库中存在的所有表。 有人可以建议我更好更有效的方法吗?
这里非常感谢任何形式的帮助。
【问题讨论】:
-
对于某些数据库存在“截断”语句。它重新创建表并更快地工作而不是事务性的。您可以使用 engine.execute('''truncate tablename''') 使用原始 SQL 执行它
-
@Varela 感谢您分享您的想法,我想以适用于所有数据库的方式编写方法/函数。因为
truncate依赖于数据库,所以它不是我的首选。 -
那么没有比这更好的了,你不能省略遍历表并删除可能唯一适用于所有数据库的语句。
-
metadata.drop_all()然后metadata.create_all()有什么问题
标签: python sqlalchemy