使用SQL Alchemy ORM在postgres中进行序列/自动增量问题

时间:2018-04-26 13:55:11

标签: 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

在region_master中插入数据

db.Region(region_name =“APAC”) - >数据库使用region_master_region_master_id_seq分配region_master_id = 1(默认情况下由postgres创建,因为我使用autoincrement = True)

但是现在假设我使用sql查询插入数据然后它跳过序列(region_master_region_master_id_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作为last_value:

select last_value from region_master_seq 

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

dm.Region(region_name="EMEA") 

此处DB尝试分配region_master_id = 2,并且它以唯一键约束失败。

那么ORM /数据库是否有任何方式将4作为下一个id。

0 个答案:

没有答案