当前位置:  开发笔记 > 编程语言 > 正文

SQLAlchemy和空列

如何解决《SQLAlchemy和空列》经验,为你挑选了2个好方法。

当我尝试使用SQLAlchemy将新记录插入数据库并且我没有填写所有值时,它会尝试将它们插入为"无"(而不是省略它们).然后它抱怨"不能为空"错误.有没有办法让它只是省略sql查询中的列,如果我在声明实例时也省略了它们?



1> Van Gale..:

要添加到Ali A的答案,这意味着您需要nullable=True在列定义中,以便在列中允许NULL.例如:

email_address = Column(String, nullable=True)

表和列的SQLAlchemy文档,摘自v1.2 doc:

nullable - 设置为False时,将在为列生成DDL时添加"NOT NULL"短语.当为True时,通常不会生成任何内容(在SQL中默认为"NULL"),除非在某些非常特定的后端特定边缘情况下,"NULL"可以显式呈现.默认为True,除非primary_key也为True,在这种情况下默认为False.此参数仅在颁发CREATE TABLE语句时使用.


这更直接地回答了这个问题

2> Ali Afshar..:

这是数据库架构问题,而不是SQLAlchemy问题.如果您的数据库模式具有不能为NULL的列,则必须将某些内容(即非None)放入其中.或者更改您的架构以在这些列中允许NULL.

维基百科有一篇关于NULL的文章和一篇描述非NULL约束的文章

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有