查询python flask后更新页面

时间:2016-01-06 17:44:32

标签: python flask sqlalchemy flask-sqlalchemy flask-wtforms

我在编码方面遇到了一些问题。我在Python的论坛中添加了一个问题。在db中添加新对象后,代码只打印旧对象,而不是新对象,即使在db中添加了对象。 只有在我再次运行时才会打印新对象。

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

这是applicativo.py:

<form method="POST" enctype="multipart/form-data" action={{ url_for('newquestion', topic_id=topic_id) }}>
    <p>
        {{ wtf.quick_form(form) }}
    </p>
</form>

question.html:

attrs

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

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我有预感你正在使用MySQL。

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

可重复读取本质上意味着任何数据读取都不会改变,如果事务再次读取相同的数据,它将找到原先读取的数据,保持不变。

你想要的是READ COMMITTED

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

还有其他内容,例如READ UNCOMMITTEDSERIALIZABLE

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

对于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