假设您要制作一个或多个comuns UNIQUE
或想制作INDEX
。如果所有列都设置为NOTNULL == True
,这仅适用于MySQL(也可能在其他数据库中,我不知道)。但Colums必须是可以为空的。从我读到的内容中你应该得到一个特殊值,它将代表NULL。 特殊值可以是0
(零)或""
(空字符串)。当然,这个值不允许作为标准分配(不再有列中0
或""
的代表)
如果我使用像SQLalchemy这样的ORM在python中访问我的数据库,那么在从DB读取特殊值到特殊值时将特殊值转换为None
会更方便如果您将列设置为None
,则为。
实际我认为最好的解决方案是使用这样的getter和setter:
Base = declarative_base()
class NotNullClass(Base):
__tablename__ = 'notnull_class'
id = Column(INTEGER , primary_key=True)
_column1 = Column('column1', INTEGER, nullable=False, unique=True)
@hybrid_property
def column1(self):
if (_column1 == 0):
return None
else
return _column1
@column1.setter
def column1(self, value):
if (value == 0):
raise Exception
elif (value == None)
_column1 = 0
else
_column1 = value
但是有没有更好的解决方案,比如SQLalchemy中的内置属性?或者还有其他最佳做法吗?