我正在尝试使用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'
任何帮助将不胜感激。
答案 0 :(得分:0)
根据this answer,您需要在创建模型之前调用db.Model.metadata.reflect(db.engine)
。这样,现有表格的元数据将填充在metadata.tables
。