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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用flask_sqlalchemy“ImportError:无法导入名称”相关的知识,希望对你有一定的参考价值。

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

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

答案

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

另一答案

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

以上是关于使用flask_sqlalchemy“ImportError:无法导入名称”的主要内容,如果未能解决你的问题,请参考以下文章

flask_sqlalchemy 调用存储过程

Python中使用flask_sqlalchemy实现分页效果方法详解

flask_sqlalchemy join的正确使用方法

flask_sqlalchemy的使用

text 使用Flask_SQLAlchemy连接到Azure SQL

No module named 'flask_sqlalchemy'