2024-05-23 18:10:15 发布
网友
我有一个Table包含以下列:
Table
Column('type', String(128))
在数据库中插入新行时,如何将此列设置为空?
我试过这样做:
self.type = NULL;
Python中没有NULL类型,所以我不知道如何做。
NULL
正如其他答案所指出的,显式NULL可以通过传递None插入,或者在SQLAlchemy a^{}构造的情况下,作为值插入。实际上,PEP-249“DB-API v2.0”在"Type Objects and Constructors"中清楚地说明了这一点:
None
SQL NULL values are represented by the Python None singleton on input and output.
作为第三个选项,如果列可以为空,则可以省略它:
t = Table('t', metadata, Column('a', Integer), Column('b', Integer)) stmt = t.insert().values(a=1) engine.execute(stmt)
将有效地在表t中插入新行(1, NULL),因为没有为列b提供值。同样的情况也适用于映射类,我想最初的问题实际上是在使用它(因为self):
t
(1, NULL)
b
self
class T(Base): __tablename__ = 't' id = Column(Integer, primary_key=True) a = Column(Integer) b = Column(Integer) session.add(T(a=1)) session.commit()
再次有效地导致(default, 1, NULL)被插入。
(default, 1, NULL)
而不是尝试
self.type = NULL
以Yaroslav Admin suggested身份尝试
self.type = None
因为Python的NULL等价物是None。
我知道这是条老线索,但这对我有用
self.type = sqlalchemy.sql.null()
正如其他答案所指出的,显式NULL可以通过传递} 构造的情况下,作为值插入。实际上,PEP-249“DB-API v2.0”在"Type Objects and Constructors"中清楚地说明了这一点:
None
插入,或者在SQLAlchemy a^{作为第三个选项,如果列可以为空,则可以省略它:
将有效地在表
t
中插入新行(1, NULL)
,因为没有为列b
提供值。同样的情况也适用于映射类,我想最初的问题实际上是在使用它(因为self
):再次有效地导致
(default, 1, NULL)
被插入。而不是尝试
以Yaroslav Admin suggested身份尝试
因为Python的NULL等价物是None。
我知道这是条老线索,但这对我有用
相关问题 更多 >
编程相关推荐