【发布时间】:2016-10-10 20:25:35
【问题描述】:
我有一个如下所示的课程:
class Account(db.Model, flask_login.UserMixin):
__tablename__ = 'account'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(75))
username = db.Column(db.String(50))
password = db.Column(db.String(250))
admin = db.Column(db.Boolean)
def __init__(self, email='', username='', password='', admin=None):
self.email = email
self.username = username
self.password = password
self.admin = admin
def __repr__(self):
return '<Account %r>' % self.username
当我通过表单创建帐户时,admin 属性将为None。但是当我访问数据库并尝试手动将其设置为True时,属性会更新,但是当我再次访问数据库时,属性是None 超级烦人。
这是我在控制台上执行的:
account = Account.query.get(1)
account.admin = True
db.session.commit()
db.admin ----> True
exit()
#restart again
account = Account.query.get(1)
account.admin ----> None
我做错了什么?
【问题讨论】:
-
get不需要重新获取记录。当account.admin是None时,你确定你有一个干净的会话吗? -
可以肯定的是,这又是一个拥有多个
db实例的情况,因此Account.query使用的会话与db.session不同。
标签: python flask sqlalchemy flask-sqlalchemy