47

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_activeNoneと表示されました。

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なし] に設定されています。なんで?

4

4 に答える 4

65

デフォルト値を設定する必要があります。設定しない場合、None/NULLが使用されます。

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

でこれを実行したかったのですが、の代わりに(ローカル変数)__init__を使用しました。is_active = Trueself.is_active = True

于 2012-08-20T22:06:50.073 に答える
45

Flask-SQLAlchemy を使用している場合、このコマンドを使用してサーバー側のデフォルトを作成できます。

from sqlalchemy.sql import expression
active = db.Column(db.Boolean, server_default=expression.true(), nullable=False)

これにより、データベースにデフォルト値が作成されるため、誰でもそれに書き込むことができ、DB にはデフォルト値が設定されます。

于 2017-06-27T18:09:50.933 に答える
22
is_active = Column(Boolean, server_default='t', default=True)
于 2016-01-04T16:28:48.830 に答える