首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询python flask后更新页面

问查询python flask后更新页面
EN

Stack Overflow用户
提问于 2016-01-07 01:44:32
回答 1查看 349关注 0票数 0

我在编码时遇到了一些问题。我必须用Python在论坛上添加一个问题。在数据库中添加新对象后,即使在数据库中添加了对象,代码也只打印旧对象,而不打印新对象。只有当我再次运行时,才会打印新对象。

代码语言:javascript
复制
@app.route('/question/<topic_id>', methods=['GET', 'POST'])
def newquestion(topic_id):
    username = 'elena27'  
    question_ = request.form['question']
    new_question = applicativo.newQuestion(username, question_, topic_id)
    db.session.add(new_question)
    db.session.commit()
    db.session.remove()
    return render_template('newquestion.html')

下面是applicativo.py:

代码语言:javascript
复制
def countQuestion():
    number=int(session.query(Question).order_by('-id').first().id)
    return number+1

def newQuestion(username, question, topic):
    id = countQuestion()
    date = datetime.now()
    question = Question(id, topic, username, question, date)
    return question

question.html:

代码语言:javascript
复制
<form method="POST" enctype="multipart/form-data" action={{ url_for('newquestion', topic_id=topic_id) }}>
    <p>
        {{ wtf.quick_form(form) }}
    </p>
</form>

newquestion.html页面只是一个静态页面。

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 08:16:02

我有预感你在用MySQL。

默认情况下,MySQL使用隔离级别 Repeatable Read。

可重复读取本质上是指任何读取的数据都不能更改,如果事务再次读取相同的数据,它将发现之前读取的数据原封不动。

你想要的是READ COMMITTED

这本质上限制了读者看到任何中间的、未提交的、“脏”的数据。它总是读取当前的提交,并且不保证一致性。

还有其他的,如READ UNCOMMITTED和SERIALIZABLE

将隔离级别参数传递给会话构造函数。

对于Flask-SQLAlchemy,我相信

db = SQLAlchemy(session_options={"isolation_level":"READ COMMITED"})

应该可以工作,但我不使用FLask-SQLAlchemy

对于原始SQLAlchemy引擎

eng = create_engine( "mysql+pymysql://admin:password@localhost/example", isolation_level='READ COMMITTED')

有关隔离级别和SQLAlchemy的更多信息,请参阅(引擎级、连接级、事务级)

http://docs.sqlalchemy.org/en/latest/orm/session_transaction.html#setting-transaction-isolation-levels

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34639383

复制
相关文章

相似问题

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