更新未在mysql服务器flask-sqlalchemy上提交

时间:2017-03-11 13:38:13

标签: python mysql flask sqlalchemy flask-sqlalchemy

我能够选择'查询到我的Mysql数据库。 然而,"插入"那些不改变数据库,只改变python对象。因此,当我重新启动烧瓶应用程序时,所有提交的(?)版本都已消失。

查看:

echo draw_calendar(date("m"), date("Y"), $per_day_chu);

没有特别的例外。路线总是返回" ok"。

型号:

from flask import Flask, render_template, request, redirect, url_for, flash, Response
from sqlalchemy import exc
from models import *

app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'kjhS7usfHGJHDez78'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://admin:admin@127.0.0.1:3306/grenier'
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

db.create_all()

@app.route('/ajax/submit_edition', methods=['POST'])
def submit_edition():
    if request.method == 'POST':
        given_id=1
        show = Shows.query.filter_by(id=given_id).first()
        show.short_description = "Hello"
        try:
            db.session.commit()
            db.session.flush()
            return "ok"
        except exc.SQLAlchemyError:
            return "Error in commiting the edition"

当我查看日志时,会为select创建sql请求。但是对于insert commit(),什么都没有。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是使用两个不同的SQLAlchemy实例。当您调用db.create_all()方法时,它会创建从db.Model继承的所有表,但在您的视图中,您没有从db = SQLAlchemy(app)继承的任何模型。您的所有模型都继承自其他SQLAlchemy实例。要解决此问题,请将db对象从视图导入模型模块,并将其用作继承的父类:

#models.py
from views import db

#db = SQLAlchemy() #remove this line
class Show(db.Model):
    ...