【发布时间】:2018-02-09 22:54:41
【问题描述】:
我正在尝试连接到现有数据库,但不确定将db.Model.metadata.reflect(db.engine) 放在哪里,如下面的question 所示。
我的烧瓶应用程序的结构如下:
我不确定在哪里添加db.Model.metadata.reflect(db.engine)。
在intel\__init__.py我正在使用一个函数来创建应用程序:
def create_app():
app = Flask(__name__)
app.config.from_object('config')
register_extensions(app)
register_blueprints(app)
return app
在我的 register_extensions 函数中:
def register_extensions(app):
db.init_app(app)
db.Model.metadata.reflect(db.engine)
return None
在my model\sam.py
from intel.database import db
class Sam(db.Model):
__table__ = db.Model.metadata.tables['sam_monthly_extract']
现在,当我这样做时,我得到一个错误:
Traceback (most recent call last):
File "run.py", line 1, in <module>
from intel import create_app
File "C:\Users\spitf\G2XChange\intel_app\intel\__init__.py", line 6, in <module>
from intel.views.sam_view import sam_blueprint
File "C:\Users\spitf\G2XChange\intel_app\intel\views\sam_view.py", line 3, in <module>
from intel.models.sam import Sam
File "C:\Users\spitf\G2XChange\intel_app\intel\models\sam.py", line 4, in <module>
class Sam(db.Model):
File "C:\Users\spitf\G2XChange\intel_app\intel\models\sam.py", line 5, in Sam
__table__ = db.Model.metadata.tables['sam_monthly_extract']
KeyError: 'sam_monthly_extract'
我做错了什么?
编辑:
run.py
from intel import create_app
app = create_app()
app.run(debug=True)
【问题讨论】:
-
你有 sam_monthly_extract 表吗?
-
你的run.py是什么?发布该代码
-
是的,桌子在那里。
-
请确保您只在致电
db.Model.metadata.reflect()后使用import sam。您的导入语句不必位于文件的顶部。 -
我在 sam_blueprint 中使用我的 Sam 模型,该模型位于
intel\views
标签: python flask sqlalchemy flask-sqlalchemy