app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from views import IndexView
app = Flask(__name__)
app.config.from_object('app.config')
db = SQLAlchemy(app)
# routing
app.add_url_rule('/', view_func=IndexView.as_view('show_posts'))
if __name__ == '__main__':
app.debug = True
app.run()
app/models.py
import datetime
from app import db
class Article(db.Model):
# some fields
class Author(db.Model):
# some more fields
app/seed.py
from app.models import Author, Article
from app import db
author1 = Author('guy 1')
author2 = Author('guy 2')
article1 = Article(authors=[author1, author2], contents='dsafda')
article1 = Article(authors=[author1], contents='vcxzcvz')
db.session.add(author1)
db.session.add(author2)
db.session.add(article1)
db.session.add(article1)
db.session.commit()
我正在尝试从python -m app.manage_scripts.seed
以上的级别运行app
,我收到了标题中提到的错误。我的代码中没有看到循环导入问题,但也许我只是忽略了什么?
编辑:
控制台输出为:
(_env) E:\code\python\flask_blog>python -m app.manage_scripts.seed
E:\code\python\flask_blog\_env\Scripts\python.exe: cannot import name db
答案 0 :(得分:0)
我通过在本地进行一些导入解决了这个问题。代码的工作版本(app/__init__.py
):
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
def create_routes(app):
from views import IndexView
app.add_url_rule('/', view_func=IndexView.as_view('show_posts'))
app = Flask(__name__)
app.config.from_object('app.config')
db = SQLAlchemy(app)
if __name__ == '__main__':
create_routes(app)
app.debug = True
app.run()