bod*_*ydo 11 python sqlalchemy
我有Table以下一栏:
Column('type', String(128))
Run Code Online (Sandbox Code Playgroud)
在数据库中插入新行时,如何将此列设置为NULL?
我试过这样做:
self.type = NULL;
Run Code Online (Sandbox Code Playgroud)
NULLPython中没有类型,所以我不知道如何做.
小智 28
而不是尝试
self.type = NULL
Run Code Online (Sandbox Code Playgroud)
self.type = None
Run Code Online (Sandbox Code Playgroud)
因为Python与NULL的等价物是None.
ome*_*ell 11
我知道这是一个老线程,但这对我有用
self.type = sqlalchemy.sql.null()
Run Code Online (Sandbox Code Playgroud)
正如其他答案所指出的那样,可以通过传递显式NULL来插入值None,或者在SQLAlchemy的情况下null(),将值作为值插入。实际上,PEP-249“ DB-API v2.0”在“类型对象和构造函数”中明确指出了这一点:
SQL NULL值由
None输入和输出上的Python 单例表示。
作为第三个选项,如果可以为空,则可以简单地忽略该列:
t = Table('t', metadata,
Column('a', Integer),
Column('b', Integer))
stmt = t.insert().values(a=1)
engine.execute(stmt)
Run Code Online (Sandbox Code Playgroud)
会有效地(1, NULL)在表中插入新行t,因为没有为column提供值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()
Run Code Online (Sandbox Code Playgroud)
再次有效地导致(default, 1, NULL)被插入。
| 归档时间: |
|
| 查看次数: |
17531 次 |
| 最近记录: |