Python 删除表、SQLAlchemy、Postresql后初始化序列

Python 删除表、SQLAlchemy、Postresql后初始化序列,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我在Flask API中使用带有sqlalchemy的Postgres数据库,我的数据库模型定义如下: class Cache1(db.Model): __tablename__ = 'Cache1' id = db.Column(db.Integer, Sequence('Cache1_id_seq', start=1, increment=1), primary_key=True) name = db.Column(db.String(20)) 问题是当我在一个视图中执行Ca

我在Flask API中使用带有sqlalchemy的Postgres数据库,我的数据库模型定义如下:

 class Cache1(db.Model):
  __tablename__ = 'Cache1'
  id = db.Column(db.Integer, Sequence('Cache1_id_seq', start=1, increment=1), primary_key=True)
  name = db.Column(db.String(20))
问题是当我在一个视图中执行
Cache1.query.delete()
,然后尝试将新记录放入
Cache1
,序列号不是从1开始的。我应该总是去Postgres,用1重新启动
更改序列“Cache1\u id\u seq”。

有人能告诉我在炼金术中如何做到这一点吗。感谢您在adcance中使用
ALTER SEQUENCE
命令修改PostgreSQL序列。没有用于此的内置SQLAlchemy函数,请使用
session.execute
执行SQL

db.session.execute("ALTER SEQUENCE Cache1_id_seq RESTART WITH 1")
db.session.commit()

好的,我意识到这可能是一个恼人的问题,但为什么你需要重置序列?我假设您正在清除缓存以重新加载新数据,因此加载的条目不一定会获得与重新加载之前相同的id如果您的ORM支持。(并注意引用此表的外键)@joop我也尝试了
截断表db.session.execute('ALTER SEQUENCE“Cache1\u id\u seq”restart WITH 1')
?不过,通常没有什么好的理由需要重置序列。通常是因为一些不重要的原因,比如化妆的原因。我很欣赏这个答案,但是我不清楚
test\u id\u seq
。将帮助您更新答案以使用OP的表名(
Cache1\u id\u seq
)。更多详细信息:答案已更新