【问题标题】:Flask SQLAlchemy skips id if I got an error with adding new users [duplicate]如果我在添加新用户时遇到错误,Flask SQLAlchemy 会跳过 id [重复]
【发布时间】:2021-06-28 15:33:17
【问题描述】:

我的模特:

class User(db.Model, UserMixin):
__tablename__ = 'api_user'

id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(30), nullable=False, index=True)
last_name = db.Column(db.String(40), nullable=False, index=True)
email = db.Column(db.String(50), unique=True, nullable=False, index=True)
password = db.Column(db.String(50), nullable=False)
birth_date = db.Column(db.Date, nullable=False, index=True)

即使这是一个小错误(例如无效的电子邮件格式等),它也会抛出一个错误并跳过它会给这个新用户的 id。 表:

bulletin_board=# SELECT * FROM api_user;
 id | first_name | last_name |       email       | password | birth_date 
----+------------+-----------+-------------------+----------+------------
  1 | Rejep      | Mammedov  | reppon@mail.ru    | test123  | 1997-11-16
  3 | Rejep      | Mammedov  | repposn@mail.ru   | test123  | 1997-11-16
  4 | Rejep      | Mammedov  | repposan@mail.ru  | test123  | 1997-11-16
  8 | Rejep      | Mammedov  | repposasn@mail.ru | test123  | 1997-11-16
(4 rows)

user = User(first_name='Rejep', last_name='Mammedov', email='repposasn@mail.ru', password='test123', birth_date='16-11-1997')
db.session.add(user)
db.commit()

【问题讨论】:

    标签: database postgresql flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    默认情况下,SQLA 使整数主键“自动递增”,因此无论出于何种原因,您尝试插入失败,自动 ID 都会递增。 在运行时重置自动增量值是不可行的。 如果这对您来说是一个严重的问题,您可以强制它使用手动计算的主键。让我知道您是否正在这样做。

    【讨论】:

    • 这是有道理的。谢谢
    • 如果这回答了您的问题,请将其标记为已接受的答案。它将帮助他人并给你额外的荣誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2011-05-05
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多