SQLAlchemy - ORM 中可以使用 BigInteger Identity 列吗?

qal*_*lis 3 python postgresql sqlalchemy

我想在 SQLAlchemy ORM 中创建 BigInteger Identity 列。文档没有任何 ORM Identity 或 BigInteger Identity 的示例。

  1. 这有可能吗?我没有看到任何允许指定内部整数类型的 Identity 类型参数
  2. 这个怎么做?我是否必须创建自定义类型并将其传递到Mapping[]括号内?

sna*_*erb 9

这似乎有效:

import sqlalchemy as sa    
from sqlalchemy.orm import mapped_column, Mapped, DeclarativeBase    
    
      
class Base(DeclarativeBase):    
    pass    
    
      
class Test(Base):    
    __tablename__ = 't75312537'    
    
    id: Mapped[int] = mapped_column(    
        sa.BigInteger, sa.Identity(), primary_key=True    
    )    
    
    
engine = sa.create_engine('postgresql+psycopg2:///test', echo=True)    
Base.metadata.drop_all(engine, checkfirst=True)    
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)

输出:

CREATE TABLE t75312537 (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY, 
    PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

请参阅身份列(GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY)中的文档。