Database 如果我在添加新用户时出错,Flask SQLAlchemy将跳过id

Database 如果我在添加新用户时出错,Flask SQLAlchemy将跳过id,database,postgresql,flask,sqlalchemy,flask-sqlalchemy,Database,Postgresql,Flask,Sqlalchemy,Flask Sqlalchemy,我的模型: 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 =

我的模型:

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。 表:


默认情况下,SQLA生成一个整数主键“自动递增”,因此无论尝试插入失败的原因是什么,自动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()