使用flask_sqlalchemy“ImportError:无法导入名称”

问题描述 投票:0回答:2

我正在努力创建一个最小的应用程序作为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

我无法找出我做错了什么,我一定错过了一些非常明显的事情。

python flask flask-sqlalchemy
2个回答
0
投票

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.