首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flask :从数据库中检索数据并将其存储在会话中

Flask :从数据库中检索数据并将其存储在会话中
EN

Stack Overflow用户
提问于 2013-03-24 22:15:27
回答 2查看 2.2K关注 0票数 1

我有这样的db.model:

代码语言:javascript
运行
复制
class UserProfile(db.Model):
  __tablename__ = 'UserProfile'
  nickname = db.Column(db.String(40), primary_key=True)
  wm = db.Column(db.Boolean)

def __init__(self,name):
    self.nickname = name
    self.wm  = 1

def __repr__(self):
    return '<UserProfile {nickname}>'.format(username=self.nickname)

在用户登录期间-我试图从db检索记录,并将其值存储在会话变量中-

代码语言:javascript
运行
复制
    userprofile = UserProfile(form.username.data)
    userprofile = UserProfile.query.filter_by(nickname=form.username.data).first()
    session['wm']=userprofile.wm

但它失败了,并显示如下消息:

代码语言:javascript
运行
复制
     session['wm']=userprofile.wm
     AttributeError: 'NoneType' object has no attribute 'wm'

Mysql数据库:

代码语言:javascript
运行
复制
mysql> desc UserProfile;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| nickname   | varchar(40) | NO   | PRI | NULL    |       |
| wm         | tinyint(1)  | YES  |     | NULL    |       |

它也有记录。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-24 22:20:08

您需要首先将新的UserProfile对象添加到数据库中:

代码语言:javascript
运行
复制
userprofile = UserProfile(form.username.data)
db.session.add(userprofile)

请参阅Flask-SQLAlchemy documentation on insertion

在您将对象添加到会话之前,SQLAlchemy基本上不打算将其添加到事务中。这很好,因为您仍然可以放弃更改。例如,考虑在页面上创建帖子,但您只想将帖子传递给模板以进行预览呈现,而不是将其存储在数据库中。

然后,add()函数调用添加对象。

票数 4
EN

Stack Overflow用户

发布于 2015-08-13 19:33:27

添加后,您需要提交,以查看更改

代码语言:javascript
运行
复制
userprofile = UserProfile(form.username.data)
db.session.add(userprofile)
db.session.commit()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15599519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档