定义 SQLAlchemy 枚举列长度
Defining SQLAlchemy enum column lenght
我想知道是否可以使用 SQLAlchemy 定义枚举类型字段的长度。在我的例子中,类 定义如下:
EnumTest.py
from enum import Enum
class EnumTest(str, Enum):
EnumTest1 = "EnumTest1"
EnumTest2 = "EnumTest2"
EnumTest3 = "EnumTest3"
TestTable.py
from models import Base
from sqlalchemy import Column, Enum, String
from .EnumTest import EnumTest
class TestTable(Base):
__tablename__ = "test"
id = Column(String(50), primary_key=True)
my_enum = Column(Enum(EnumTest), nullable=False)
我的目标是创建一个名为 my_enum 的字段,类型为 character varying,长度为 50 与 id 字段的情况相同。
Docs 说
The Enum type will make use of the backend’s native “ENUM” type if one
is available; otherwise, it uses a VARCHAR datatype
...
length – allows specifying a custom length for the VARCHAR when
Enum.native_enum is False. By default it uses the length of the
longest value.
因此,您可以设置 native_enum=False
和 length=50
。它可能看起来像这样
my_enum = Column(Enum(EnumTest, native_enum=False, length=50), nullable=False)
我想知道是否可以使用 SQLAlchemy 定义枚举类型字段的长度。在我的例子中,类 定义如下:
EnumTest.py
from enum import Enum
class EnumTest(str, Enum):
EnumTest1 = "EnumTest1"
EnumTest2 = "EnumTest2"
EnumTest3 = "EnumTest3"
TestTable.py
from models import Base
from sqlalchemy import Column, Enum, String
from .EnumTest import EnumTest
class TestTable(Base):
__tablename__ = "test"
id = Column(String(50), primary_key=True)
my_enum = Column(Enum(EnumTest), nullable=False)
我的目标是创建一个名为 my_enum 的字段,类型为 character varying,长度为 50 与 id 字段的情况相同。
Docs 说
The Enum type will make use of the backend’s native “ENUM” type if one is available; otherwise, it uses a VARCHAR datatype
...
length – allows specifying a custom length for the VARCHAR when Enum.native_enum is False. By default it uses the length of the longest value.
因此,您可以设置 native_enum=False
和 length=50
。它可能看起来像这样
my_enum = Column(Enum(EnumTest, native_enum=False, length=50), nullable=False)