postgresql – 表删除后重置id计数()

postgresql – 表删除后重置id计数(),第1张

概述出于测试目的,我在执行代码之前清除(删除)每个表. for table in reversed(db.metadata.sorted_tables): engine.execute(table.delete())do_stuff() 但是,新数据的id值从前一个id停止的位置开始: 第一次迭代: id | value -----+--------- 1 | hi 出于测试目的,我在执行代码之前清除(删除)每个表.

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.pysqlALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase'app.pyapp = Flask(__name__)app.config.from_pyfile('config.py')db = sqlAlchemy(app)models.pyfrom app import app,dbdef 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() – 这应该重置自动增量序列. 总结

以上是内存溢出为你收集整理的postgresql – 表删除后重置id计数()全部内容,希望文章能够帮你解决postgresql – 表删除后重置id计数()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1156538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存