【问题标题】:SQLALCHEMY set default False nullable TrueSQLALCHEMY 设置默认 False 可为空 True
【发布时间】:2016-07-14 20:07:37
【问题描述】:

我在这里阅读了一些 sqlalchecmy 的答案,但我仍然不清楚两种情况。

这些到底是什么意思,它们之间有什么区别?

  • 为列设置默认的 False 和可为空的 True

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

  • 为列设置默认 True 和可为空的 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:这不是实际代码,但它与我试图实现的实际代码相似。

【问题讨论】:

  • null=True 在等于 False 时允许空值,因此不允许任何列值为 null/None,如果您不传递值,则默认为列提供默认值

标签: python database python-3.x sqlalchemy flask-sqlalchemy


【解决方案1】:

default 指定列为空时的默认值,因此 default=True 仅对布尔列有意义,如果该列为空,则插入 True。

nullable 指定列中的值是否可以为NULL(或在python中为None)(如果为空则为空,不指定默认值)

【讨论】:

  • 所以对于 check = Column(Boolean, default=False, nullable=True) 默认值将在没有指定值时设置为 False,即 nullable=True,对吗?由于 nullable=True 允许列为 NULL。
  • 是的,但 nullable=False 也会发生这种情况
  • 但是当列变为 True 时,即当我为其分配某个值或 True 时,我的代码将失败。它仅适用于 False 或 NULL 情况。我无法弄清楚:(
  • 嗯,真的很长。但我可以分享我试图实现的逻辑。我不介意编辑我的问题。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
相关资源
最近更新 更多