use*_*451 28 python sqlalchemy pyramid
我在Pyramid应用程序中有这个表
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
.....
is_active = Column(Boolean, unique=False)
def __init__(self, name, raw_password):
is_active = True
Run Code Online (Sandbox Code Playgroud)
当我做我的测试时,它说is_active是没有.
def test_register_user(self):
user = User('user1', '1234')
self.sess.add(user)
self.sess.flush()
#print user
#self.assertTrue(user.is_active, True)
user_db_record = self.sess.query(User).filter_by(name=user.name).first()
self.assertEqual(user_db_record.is_active, True)
Run Code Online (Sandbox Code Playgroud)
从我的集成日志中,我看到在创建行时,is_active将其设置为None.为什么?
Joc*_*zel 46
您必须设置默认值,否则使用None/NULL:
is_active = Column(Boolean, unique=False, default=True)
Run Code Online (Sandbox Code Playgroud)
你想这样做,__init__但你使用is_active = True(一个局部变量)而不是self.is_active = True.
小智 17
is_active = Column(Boolean, server_default='t', default=True)
Run Code Online (Sandbox Code Playgroud)
小智 15
如果您使用的是Flask-SQLAlchemy,则可以使用此命令创建服务器端默认值.
from sqlalchemy.sql import expression
active = db.Column(db.Boolean, server_default=expression.true(), nullable=False)
Run Code Online (Sandbox Code Playgroud)
这将在数据库上创建一个默认值,这样任何人都可以写入它,并且数据库将具有默认值.