在SQLAlchemy中,如何使枚举类型名称在数据库中使用UndeScore?

2024-10-01 00:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

您可以在SQLAlchemy中使用__tablename__为表命名。似乎没有等效的方法来处理枚举类型

请参阅我在此处定义的枚举:

class NumberBought(enum.Enum):
    very_low = 'very_low'
    low = 'low'
    medium = 'medium'
    high = 'high'
    very_high = 'very_high'

以下是它在pgAdmin中的显示方式:

enter image description here

我想要一种在名称中添加下划线的方法,以便它在实际数据库中读取number_bought,而不是numberbought

我已经尝试了一些可能的语法,并查看了各种StackOverflow答案和SQLAlchemy docs来实现这一点,但还没有找到一种方法

  1. 这可能做到吗?如何做到
  2. 如果无法做到这一点,那么如果有两个名称相同的枚举(例如,称为“产品”或“价格”的两个不同枚举),是否会导致问题

Tags: 方法名称类型定义sqlalchemy请参阅enum命名
1条回答
网友
1楼 · 发布于 2024-10-01 00:19:12

是的,这是可能的。您需要将name添加到包含sa.Enum type的列定义中:

from sqlalchemy import Column, Enum
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Test(Base):
    __tablename__ = 'Test'

    id = Column(Integer, primary_key=True)
    value = Column(Enum(NumberBought, name='number_bought'))

如果要在另一个表中使用相同的enum,还需要使用相同的定义,包括上述名称

相关问题 更多 >