Postgresql

如何在 SQLAlchemy 中設置自動增量值?

  • September 25, 2021

這是我的程式碼:

   class csvimportt(Base):
    __tablename__ = 'csvimportt'

     #id = Column(INTEGER, primary_key=True, autoincrement=True)
     aid = Column(INTEGER(unsigned=True, zerofill=True),
         Sequence('article_aid_seq', start=1001, increment=1),
         primary_key=True)

我想設置一個從 1000 開始的自動增量值。我該怎麼做?

從 SQLAlchemy 1.2 文件

Postgresql 10 有一個新的 IDENTITY 特性,它取代了 SERIAL 的使用。尚未提供對 IDENTITY 呈現的內置支持,但是可以使用以下編譯掛鉤將出現的 SERIAL 替換為 IDENTITY:

from sqlalchemy.schema import CreateColumn
from sqlalchemy.ext.compiler import compiles


@compiles(CreateColumn, 'postgresql')
def use_identity(element, compiler, **kw):
    text = compiler.visit_create_column(element, **kw)
    text = text.replace("SERIAL", "INT GENERATED BY DEFAULT AS IDENTITY")
    return text

從 1.4 版開始,SQLAlechemy 有Identity列。

從文件複製的範例:

from sqlalchemy import Table, Column, MetaData, Integer, Computed

metadata = MetaData()

data = Table(
   "data",
   metadata,
   Column(
       'id', Integer, Identity(start=42, cycle=True), primary_key=True
   ),
   Column('data', String)
)

引用自:https://dba.stackexchange.com/questions/207812