我的 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

当我进行测试时,它说is_active为None。
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)

从我的集成日志中,我看到我们在创建行时将is_active设置为None。为什么?

最佳答案

您必须设置一个默认值,否则使用None/NULL:

is_active = Column(Boolean, unique=False, default=True)

您想在__init__中执行此操作,但是您使用is_active = True(本地变量)而不是self.is_active = True

关于python - SQLAlchemy bool 值是None,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12045698/

10-14 19:31
查看更多