postgresql – 表删除后重置id计数()
发布时间:2020-12-13 15:52:37 所属栏目:百科 来源:网络整理
导读:出于测试目的,我在执行代码之前清除(删除)每个表. for table in reversed(db.metadata.sorted_tables): engine.execute(table.delete())do_stuff() 但是,新数据的id值从前一个id停止的位置开始: 第一次迭代: id | value -----+--------- 1 | hi 2 | there
出于测试目的,我在执行代码之前清除(删除)每个表.
for table in reversed(db.metadata.sorted_tables): engine.execute(table.delete()) do_stuff() 但是,新数据的id值从前一个id停止的位置开始: 第一次迭代: id | value -----+--------- 1 | hi 2 | there 第二次迭代(删除表,插入新数据): id | value -----+--------- 3 | good 4 | day 我删除表时有没有办法重置id计数? 编辑:似乎我打破了它,表现在根本没有清除 config.py SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase' app.py app = Flask(__name__) app.config.from_pyfile('config.py') db = SQLAlchemy(app) models.py from app import app,db def clear(): for table in reversed(db.metadata.sorted_tables): db.engine.execute('TRUNCATE TABLE ' + table.name + ' RESTART IDENTITY CASCADE') 该表仍在添加(使用db.session.add_all()和db.session.commit()).但是,clear()什么都不做.当我在终端中以postgres用户身份登录并直接执行TRUNCATE TABLE myTable RESTART IDENTITY CASCADE时,它可以正常工作. table.name给出正确的名称.这让我相信db.engine.execute()有问题,但是因为db.session.add_all()工作没有多大意义 解决方法
调用TRUNCATE TABLE MyTable RESTART IDENTITY;对于循环中的每个表而不是调用table.delete() – 这应该重置自动增量序列.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |