试图运行sql-alchemy教程步骤。无法从控制台导入数据库(ImportError:无法导入名称' db')

时间:2016-04-15 01:16:02

标签: python import flask sqlalchemy

尝试在此处运行教程: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'

1 个答案:

答案 0 :(得分:1)

__ init __。py 中声明您的db对象。在 __ init __。py 中声明的内容定义了可以在 mysite / 下导入的内容。

请参阅:What is __init__.py for?

还考虑转移到应用工厂模式。

例如在 __ 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对象实例化两次。这绝对是错误的。