运行Flask应用程序时发生KeyError(使用flask-sqlalchemy)

时间:2015-04-10 14:41:19

标签: flask flask-sqlalchemy

我正在尝试使用flask-sqlalchemy来管理我之前存在的mysql数据库,并且我有一个名为content的表。这是我的代码段。

# coding:utf-8
from flask import Flask, render_template
from flask.ext.bootstrap import Bootstrap
from flask.ext.sqlalchemy import SQLAlchemy
...

app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://...'
db = SQLAlchemy(app)


class Content(db.Model):
    __table__ = db.Model.metadata.tables['content']

    def __repr__(self):
        return '<title %r>' % self.title


@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

...

if __name__ == '__main__':
    app.run(debug=True)

当我运行上面的代码时,我收到此错误

Traceback (most recent call last):
  File "hello.py", line 13, in <module>
    class Content(db.Model):
  File "hello.py", line 14, in Content
    __table__ = db.Model.metadata.tables['content']
KeyError: 'content'

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据this answer,您需要在创建模型之前调用db.Model.metadata.reflect(db.engine)。这样,现有表格的元数据将填充在metadata.tables