Как определить начальное значение для столбца идентификатора в SQLAlchemy для SQLServer?

Я взаимодействую с SQLAlchemy между Flask и SQLServer.

У меня есть столбец идентификатора, который я хотел бы начать с 10000. Я не смог найти ответ.

Ниже приведен код SQL, который я пытаюсь преобразовать в SQLAlchemy.

Пожалуйста, дай мне знать.

Спасибо

create TABLE [dbo].[Product](
    [ID] [int] IDENTITY(**10000**,1) NOT NULL,
    [Name] [varchar](200) NOT NULL,
    [Description] [varchar](500) NULL,
    [Brand] [varchar](500) NOT NULL,
    [Price] [real] NOT NULL,
    [Qty] [int] NOT NULL,
    [ProductFilenamePrefix] [varchar](200) NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
    [Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

person user1941390    schedule 27.08.2016    source источник
comment
Возможный дубликат Установка начального значения автоинкремента SQLAlchemy   -  person Karin    schedule 27.08.2016
comment
Я думаю, что это повторяющийся вопрос: Установка начального значения автоинкремента SQLAlchemy   -  person Reza Tanzifi    schedule 27.08.2016


Ответы (1)


Вам нужно будет внести некоторые изменения после того, как SQLAlchemy создаст таблицу, как показано в приведенных выше ссылках для MySQL, но с SQL Server.

from sqlalchemy import event
from sqlalchemy import DDL
event.listen(
    Article.__table__,
    "after_create",
    DDL("DBCC checkident (%(table)s, reseed, 9999)")
)

Это заставит следующую вставленную запись начинаться со значения идентификатора 10000. Удачи.

person FlipperPA    schedule 29.08.2016
comment
Если это работает, не могли бы вы отметить это как правильное? Спасибо! - person FlipperPA; 30.08.2016
comment
Я хочу .. У меня просто недостаточно репутации. Мне пока 8. - person user1941390; 30.08.2016
comment
Я думаю, вы должны иметь возможность отмечать правильно, даже если вы еще не можете голосовать, но я могу ошибаться. Галочка, а не стрелка вверх. - person FlipperPA; 30.08.2016