xiadada2 2018-01-12 04:37 采纳率: 0%
浏览 5271
已结题

flask 新手遇到KEYERROR问题

KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

sql代码

 from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///'+os.path.join(basedir,'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] =True
db = SQLAlchemy(app)
class Role(db.Model):
    __tablename__ = 'roles'#__tablename__ 定义在数据库中使用的表名
    id = db.Column(db.Integer, primary_key=True)#primary_key如果设为 True ,这列就是表的主键.如果没有定义 __tablename__ ,SQLAlchemy 会使用一个默认名字
    name = db.Column(db.String(64), unique=True)
    users = db.relationship('User', backref='role')
    def __repr__(self):
        return '<Role % r>' % self.name
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    def __repr__(self):
        return '<User % r>' % self.username

```主程序代码



from flask import Flask,render_template,url_for,session,redirect,flash
from flask_bootstrap import Bootstrap
from flask.ext.moment import Moment
import os
from flask_sqlalchemy import SQLAlchemy
from flask.ext .wtf import Form
from wtforms import StringField,SubmitField #字段类型类导入 字符串,提交
from wtforms.validators import DataRequired #从表单验证 导入 请求
from datetime import datetime
from sql import db,User,Role,app

class NameForm(Form):
name = StringField('你的名字 ?',validators=[DataRequired()]) #DataRequired()[验证函数]表示数据示为必须非空
submit = SubmitField('提交')

app = Flask(__name__)
app.config['SECRET_KEY'] ='hard to guess string'
bootstrap = Bootstrap(app)
monent = Moment(app)
@app.route('/',methods=['GET','POST']) #app后面的metheds参数告诉Flask 在URL映射中吧视图函数注册为Get Post请求的处理程序.如果没有metheds
#参数,就只把视图函数注册为GET请求的处理程序
def index():
form = NameForm()
if form.validate_on_submit():#如果数据能被所有验证函数接收(上面的)返回True 否则False
user = User.query.filter_by(username = form .name.data).first()
if user is None:
user = User(username = form.name.data )
db.session.add(user)
session['known'] =False
else:
session['known']= True
session['name'] = form.name.data
form .name.data=''
return redirect(url_for('index'))
return render_template('user.html',form = form ,name=session.get('name'),known = session.get('known',False))

@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'),404
if name == '__main__':

app.run(debug=True)

```一提交表单就错误 图片![图片说明](https://img-ask.csdn.net/upload/201801/12/1515731831_287746.png)图片说明

  • 写回答

3条回答 默认 最新

  • 脱裤儿任风吹 2018-01-12 05:23
    关注

    不知道你的版本是多少,这个是2.0以后的,保存的话换成SQLALCHEMY_ON_TEARDOWN属性试试

    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示