Python SQLAlchemy和空列
当我尝试使用SQLAlchemy向数据库中插入一条新记录,但我没有填写所有值时,它会尝试将它们作为“无”插入(而不是忽略它们)。然后它抱怨“不能为空”错误。如果我在声明实例时也省略了列,有没有办法让它只从sql查询中省略列?这是一个数据库架构问题,而不是SQLAlchemy问题。如果您的数据库架构有一个不能为NULL的列,则必须在其中放入一些内容(即不是None)。或者更改您的模式以允许在这些列中使用NULLPython SQLAlchemy和空列,python,database-design,sqlalchemy,Python,Database Design,Sqlalchemy,当我尝试使用SQLAlchemy向数据库中插入一条新记录,但我没有填写所有值时,它会尝试将它们作为“无”插入(而不是忽略它们)。然后它抱怨“不能为空”错误。如果我在声明实例时也省略了列,有没有办法让它只从sql查询中省略列?这是一个数据库架构问题,而不是SQLAlchemy问题。如果您的数据库架构有一个不能为NULL的列,则必须在其中放入一些内容(即不是None)。或者更改您的模式以允许在这些列中使用NULL Wikipedia有一篇文章和一篇描述的文章要添加到Ali A的答案中,这意味着您需要
Wikipedia有一篇文章和一篇描述的文章要添加到Ali A的答案中,这意味着您需要在列定义中包含
nullable=True
,以便允许在列中使用NULL。例如:
email_address = Column(String, nullable=True)
,摘自v1.2文档:
nullable–设置为False时,将导致“NOT NULL”短语为空
在为列生成DDL时添加。如果为True,则通常
不生成任何内容(在SQL中默认为“NULL”),但在某些非常复杂的情况下除外
特定后端特定的边缘情况,其中“NULL”可能呈现
明确地默认为True,除非主_键也为True,其中
case默认为False。此参数仅在发出时使用
创建表语句
如果在模式中声明了默认值(但使用
notnull
检查),则可以使用
这更直接地回答了问题同意不同意,我目前的问题与问题完全相同:列定义为
timestamp NOT NULL DEFAULT\u timestamp
。添加的对象未设置此属性,但SQLAlchemy仍尝试插入NULL
值
from sqlalchemy.schema import FetchedValue
class Foo(Base):
date_created = Column(DateTime, server_default=FetchedValue())