1
私は匿名ユーザーの投稿提案と司会者が受け取った提案のステータスを指定する非常に簡単なアプリケーションを持っています(ステータスは0,1,2,3です)。フラスコ:レコードは即時に更新されません
私はカスタマイズされたリストビューとモデレータ用フラスコ-Adminを使用しています(私は、各ステータスの4つのボタンが追加されている)
from flask import Flask,request,url_for,redirect
from Admin.Admin import admin,init_login
from Model import db,suggestion,User
import geoip2.webservice
app = Flask(__name__)
app.config.from_pyfile('Config.cfg')
db.init_app(app)
app.config['SQLALCHEMY_POOL_SIZE'] = 100
app.config['SQLALCHEMY_POOL_RECYCLE'] = 100
init_login(app)
admin.init_app(app)
IPclient = geoip2.webservice.Client("XXX")
def UpdateRecord(ID,status):
try:
Record = suggestion.query.filter_by(id=ID).first()
Record.Flag=status
db.session.commit()
except Exception, r:
raise r
#db.session.flush()
#Record = suggestion.query.filter_by(id=id).first_or_404()
#Record.Flag=1
#db.session.commit()
@app.route('/')
def index():
return redirect("sometime ... ")
@app.route("/XXXX/Favorite/<int:id>")
def favorite(id):
UpdateRecord(id,1)
return redirect(url_for("admin.index")+"Favsuggestion")
@app.route("/XXXX/Archive/<int:id>")
def archive(id):
UpdateRecord(id,2)
return redirect(url_for("admin.index")+"Arcsuggestion")
@app.route("/WSC/Published/<int:id>")
def published(id):
UpdateRecord(id,3)
return redirect(url_for("admin.index")+"Pubsuggestion")
@app.route("/suggest",methods=["GET","POST"])
def suggest():
try:
db.session.flush()
suggestionString=request.form.get('suggestionString')
IpAddress=request.remote_addr
IPresponse = IPclient.city(IpAddress)
Country=IPresponse.country.name
City=IPresponse.city.name
if len(suggestionString)>0:
suggestRecord = suggestion(suggestionString,Country,City,IpAddress)
db.session.add(suggestRecord)
db.session.commit()
except Exception,e:return str(e)
return redirect("http://site/thankyou")
@app.teardown_appcontext
def shutdown_session(response_or_exc):
try:
if response_or_exc is None:
db.session.commit()
finally:
db.session.remove()
return response_or_exc
ここに私の設定です:
# -*- coding: utf-8 -*-
#NOTE:Replace bands with DB name
DEBUG = False
SECRET_KEY='key'
SQLALCHEMY_DATABASE_URI='mysql://user:[email protected]/sugeestion?charset=utf8'
問題があることですモデレーターがボタンをクリックしてリロードしてもステータスが数秒後に変更されない場合、提案ステータスが変更されます。
アップデート - 5月2 2016: iは、ログをチェックしていると私は、2つのエラーがDB
OperationalError: (_mysql_exceptions.OperationalError) (2006, 'MySQL server has gone away') [SQL: u'SELECT `User`.id AS `User_id`, `User`.`Username` AS `User_Username`, `User`.`Password` AS `User_Password`, `User`.`Permission` AS `User_Permission` \\nFROM `User` \\nWHERE `User`.id = %s'] [parameters: (1,)], referer: http://TheWebSite
、よく
StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back [SQL: u'SELECT count(%s) AS count_1 \\nFROM `suggestion` \\nWHERE `suggestion`.`Flag` = %s'] [parameters: [immutabledict({})]], referer: http://TheWebSite