Проблема с последовательностью / автоинкрементом в postgres с SQL Alchemy ORM - PullRequest
0 голосов
/ 26 апреля 2018

Привет, у меня эта модель данных в 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)

Теперь предположим, что если я вставлю данные в region_master с помощью orm

db.Region (region_name = "APAC") -> база данных выделяет region_master_id = 1 с помощью region_master_region_master_id_seq (это создается по умолчанию postgres, поскольку я использую autoincrement = True)

но теперь предположим, что я вставляю данные с помощью SQL-запроса, затем он пропускает последовательность (region_master_region_master_id_seq) и вставляет данные по заданному идентификатору.

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") 

Здесь БД пытается выделить region_master_id = 2 и завершается неудачно с ограничениями уникального ключа.

Так есть ли способ, что ORM / databasse примет 4 в качестве следующего идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...