SQLAlchemy - ORM中是否可使用BigInteger作为自增列的标识列?

3

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

  1. 这是可能的吗?我没有看到任何允许指定内部整数类型的Identity类型参数。
  2. 如何实现此目标?我是否需要创建自定义类型并将其传递到Mapping[]括号中?
1个回答

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)

输出:

CREATE TABLE t75312537 (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY, 
    PRIMARY KEY (id)
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接