如何检查自定义类型是否设置为nullable=True

0 投票
1 回答
1105 浏览
提问于 2025-04-18 11:24

我有一个自定义类型,我该如何检查在创建这个自定义类型时,列是否被设置为可为空(nullable=True)?

 import sqlalchemy.types as types

 class MyType(types.TypeDecorator):
     impl = types.Unicode

     def process_bind_param(self, value, dialect):
         return "PREFIX:" + value

     def process_result_value(self, value, dialect): 
         return value[7:]

下面是一个将会使用这个自定义类型的模型定义:

class User(BaseModel):
     __tablename__ = 'user'

     mytype = Column(MyType(), nullable=True)

1 个回答

5

我不太明白你说的在自定义类型创建时是什么意思。要检查某一列是否可以为空,可以这样做:

print(User.__table__.columns['mytype'].nullable)                                                                                       

为了让你的自定义类型能够处理空值(None),你可以这样做:

class MyType(types.TypeDecorator):       
  impl = types.Unicode

  def process_bind_param(self, value, dialect):
    return "PREFIX:" + value if value else None

  def process_result_value(self, value, dialect):
    return value[7:] if value else None

撰写回答