我在这里阅读了很少的sqlalchecmy答案,但我仍然不清楚两种情况。
这些是什么意思,它们之间有什么区别?
为列设置默认值False和nullable为
check = Column(Boolean, default=False, nullable=True)
为列设置默认的True和Nullable False
check = Column(Boolean, default=True, nullable=False)
我的想法很混乱。谢谢!
修改
这是我试图实现的逻辑。
class Checking(Base):
__tablename __ = 'Test'
check=Column(Boolean, nullable=True)
def __init__(self, check):
self.check = check
def test(self):
if self.check:
print("Success")
else:
print("Failed")
当check
变为False
时,它始终有效,即打印“失败”但在check
变为True
时无效。它失败了。
当列设置为default=False
时,也会发生同样的情况。
如果我将列设置为default=True
,则当列成为True
时它会正常工作,但当列成为False
时失败 - 表示上述情况反之亦然。
PS:这不是实际的代码,但它类似于我想要实现的实际代码。
答案 0 :(得分:1)
default指定列保留为空时的默认值,因此default = True仅对布尔列有意义,如果列为空则将插入True。
nullable指定列中的值是否可以为NULL(或者在python中为无)(如果它为空,则不指定默认值)