" ImportError:无法导入名称"使用flask_sqlalchemy

时间:2018-04-29 13:15:44

标签: python flask flask-sqlalchemy

我正致力于创建一个最小的应用程序outlined here

我的最小代码如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)


app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////sandbox.db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username


if __name__ == '__main__':
    app.run(debug = True)

我遇到的问题是当我尝试从交互式Python shell导入db对象时。

>>> from my_app import db

我系统地收到此错误消息

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name db

以下是一些背景信息:

我的文件夹名为sandbox,这里是文件及其结构

.
├── __init__.py
├── alembic
│   ├── README
│   ├── env.py
│   ├── env.pyc
│   ├── script.py.mako
│   └── versions
├── alembic.ini
├── hue.py
├── my_app.py
├── my_app.pyc
├── random_stuff.py
├── sqlalchemy.py
├── sqlalchemy.pyc
└── templates
    └── index.html

我无法找出我做错的事情,我必须错过一些非常明显的事情。

2 个答案:

答案 0 :(得分:1)

看起来我的问题是由同一文件夹中名为sqlalchemy.py的文件引起的。 由于我删除了这个文件,我不再有问题,我猜这个文件的名称与真正的sqlalchemy模块有冲突......

答案 1 :(得分:0)

您的问题没有完整的上下文,但我认为上面的文件名为my_app/app.py或类似,并且该目录不包含__init__.py文件。 Python需要该文件将目录视为可以从中导入的模块。 添加一个名为my_app/__init__.py的空文件,问题应该解决