Python 3.x SQL Alchemy ORM postgres中的序列/自动增量问题

Python 3.x SQL Alchemy ORM postgres中的序列/自动增量问题,python-3.x,postgresql,orm,sqlalchemy,Python 3.x,Postgresql,Orm,Sqlalchemy,我在ORM中有这个数据模型 class Region(db.Model): __tablename__ = 'region_master' region_master_id = db.Column( db.Integer, primary_key=True, autoincrement=True ) region_name = db.Column(db.Text) 现在假设我通过orm将数据插入区域_maste

我在ORM中有这个数据模型

class Region(db.Model):
    __tablename__ = 'region_master'
    region_master_id = db.Column(
        db.Integer,
        primary_key=True,
        autoincrement=True
      )
    region_name = db.Column(db.Text)
现在假设我通过orm将数据插入区域_master

db.Region(Region\u name=“APAC”)-->数据库使用Region\u master\u Region\u master\u id\u seq分配Region\u master\u id=1(这是postgres默认创建的,因为我使用的是autoincrement=True)

但是现在假设我使用sql查询插入数据,然后它跳过序列(region\u master\u region\u master\u id\u seq)并按给定的id插入数据

INSERT INTO public.region_master (region_master_id,  region_name)  VALUES (2, N'Europe');
INSERT INTO public.region_master (region_master_id,  region_name)  VALUES (3, N'USA');
现在序列返回1作为最后的_值:

select last_value from region_master_seq 
现在,如果我使用ORM插入,我会得到唯一的键约束错误

dm.Region(region_name="EMEA") 
在这里,DB尝试分配区域\u master\u id=2,但由于存在唯一密钥约束而失败


所以ORM/数据库有没有办法把4作为下一个id。

你需要告诉你的混淆层不要为
区域主id提供一个值,所以它应该
插入区域主(区域名)值(N'Europe')在这种情况下,它将工作。但是,如果我在查询中明确指定主键,会有什么问题吗?相关:。但最后,如果它是生成的主键(序列),则不要显式指定它。通过首先将序列的nextvalue设置为指向您的批,您可能能够使用预定义的键完成批插入,但是如果在您更新nextvalue之前,其他进程设法在批中保留一个ID,该怎么办?最后,这真的不是ORM应该关心的事情。