【问题标题】:SQLAlchemy: Increment primary key based on previous dataSQLAlchemy:根据以前的数据增加主键
【发布时间】:2020-06-18 10:49:59
【问题描述】:

我正在从一个烧瓶应用程序连接到一个 postgres docker 容器。

每次插入操作后,主键递增到下一个值。 所以如果我插入5条记录并全部删除,然后再插入一条新记录,它的主键就是6。

由于表中没有其他记录,有没有办法可以将其更改为 1?

下面是我的models.py代码:

from app import db

class Cats(db.Model):
    __tablename__ = "cats"
    id    = db.Column(db.Integer, primary_key=True)
    name  = db.Column(db.String(64), unique=True)
    price = db.Column(db.Integer)
    breed = db.Column(db.String(64))

还有database.py:

from app import db

def get_all(model):
    data = model.query.all()
    return data


def add_instance(model, **kwargs):
    instance = model(**kwargs)
    db.session.add(instance)
    commit_changes()


def delete_instance(model, id):
    model.query.filter_by(id=id).delete()
    commit_changes()


def edit_instance(model, id, **kwargs):
    instance = model.query.filter_by(id=id).all()[0]
    for attr, new_value in kwargs.items():
        setattr(instance, attr, new_value)
    commit_changes()


def commit_changes():
    db.session.commit()

【问题讨论】:

    标签: python postgresql flask sqlalchemy


    【解决方案1】:

    主键的主要目的是“永远”识别您的记录。 一旦赋予特定记录,主键在记录被删除后不应“重复使用”。

    因为当您添加记录 1、2、3、4、5 并删除记录 3 时,您也不应该跟踪“3”现在再次可用的事实。

    或者,换句话说:主键并不意味着“计数”。

    【讨论】:

      猜你喜欢
      • 2018-01-18
      • 2019-03-08
      • 2011-12-01
      • 2016-06-27
      • 1970-01-01
      • 2023-03-13
      • 2011-02-05
      • 1970-01-01
      • 2010-10-11
      相关资源
      最近更新 更多