尝试在此处运行教程:http://flask-sqlalchemy.pocoo.org/2.1/quickstart/使用我的应用
我看过循环进口问题,但我不认为是这样。我是python和flask(和sqlalchemy)的绝对初学者。我的应用程序当前正在运行,但数据库部分并没有
这是当前的设置:
mysite
|- __init__.py
|- flask_app.py
|- models.py
|- views.py
初始化的.py
from flask import Flask
app = Flask(__name__)
flask_app.py
from flask import Flask, request, url_for
import random
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql:// -- database uri --'
... app continues here
models.py
from app import app
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class Foo(db.Model):
... model continues here
views.py
from app import app,models
... views continue here, still not using anything from models
当我在python控制台中运行from mysite import db
时,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'db'
答案 0 :(得分:1)
在 __ init __。py 中声明您的db
对象。在 __ init __。py 中声明的内容定义了可以在 mysite / 下导入的内容。
还考虑转移到应用工厂模式。
例如在 __ init __。py :
中from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['DEBUG'] = True
... more application config ...
db.init_app(app)
return app
然后在 flask_app.py :
from mysite import create_app, db
app = create_app()
if __name__ == '__main__':
app.run()
我指出这一点是因为您在已显示的代码中将app
对象实例化两次。这绝对是错误的。