2016-03-27 52 views
0

我已经阅读了几个sqlalchecmy答案,但我仍然不清楚两种情况。SQLALCHEMY设置默认值False可为空True

究竟是什么意思,这些有什么区别?

  • 设置默认为false和可空真一列

    check = Column(Boolean, default=False, nullable=True)

  • 设置默认True和可空假的,我有一列

    check = Column(Boolean, default=True, nullable=False)

令人困惑的oughts。谢谢!

编辑:

这里是我想要实现的逻辑。

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:这不是实际的代码,但它与我试图实现的实际代码类似。

+1

空=真允许空值,当它等于假如没有列值可以为空/无,默认为列提供默认值,如果您不传递值 –

回答

1

默认值指定列的默认值为空时的默认值,所以default = True仅适用于布尔列,如果列为空,则会插入True。如果

可为空的指定列中的值可以是NULL(或在python无)(这将是如果它是空的,没有指定缺省值)

+0

因此对于check = Column(布尔值,默认= False,nullable = True),默认值为当没有指定值时设置为False,即nullable = True,对不对?由于nullable = True允许列为NULL。 – trishnag

+1

是的,但用nullable = False,也会发生 –

+0

但是,当列变为True时,我的代码失败,即,当我为其分配一些值或为True时。它仅适用于False或NULL情况。我无法弄清楚:( – trishnag