Ale*_*vva 2 python database migrate importerror flask
我正在尝试基于 SQLite 数据库在 Flask api 上进行迁移。这是我的项目结构
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 blueprints\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db.sqlite\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 migrations\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\nRun Code Online (Sandbox Code Playgroud)\n\n然后我在中初始化我的迁移类app.py
from flask import Flask, jsonify, request, render_template\nfrom flask_sqlalchemy import SQLAlchemy\n\nfrom conf import ErrorResponses, SuccessResponses\n\n# initialization\napp = Flask(__name__)\ndb = SQLAlchemy(app)\nfrom models import User, db, BlackListToken\n\n# extensions\nfrom flask_migrate import Migrate\nmig = Migrate(app, db)\nRun Code Online (Sandbox Code Playgroud)\n\n但从自定义模块导入时失败flask db migrate -m "rm id and made name/surname nullable"。
Usage: flask db migrate [OPTIONS]\n\nError: While importing "api_flask.app", an ImportError was raised:\n\nTraceback (most recent call last):\n File "/usr/local/lib/python3.6/dist-packages/flask/cli.py", line 235, in locate_app\n __import__(module_name)\n File "/home/zahessi/all/bubbie_D/api_flask/app.py", line 9, in <module>\n from conf import ErrorResponses, SuccessResponses\nModuleNotFoundError: No module named \'conf\'\nRun Code Online (Sandbox Code Playgroud)\n\n外观如下models.py:
from app import db\n\nclass User(db.Model):\n __tablename__ = \'users\'\n\n username = db.Column(db.String(32), index=True, unique=True, nullable=False)\n email = db.Column(db.String(64), unique=True, nullable=False)\n password_hash = db.Column(db.String(64), nullable=False)\n name = db.Column(db.String(32))\n surname = db.Column(db.String(32))\n public_id = db.Column(db.String(32))\n creation_date = db.Column(db.DateTime)\n ...\nRun Code Online (Sandbox Code Playgroud)\n\n当我从自定义 py 文件中删除所有导入时,一切似乎都有效,但是,这是很多不必要的工作。您有什么建议吗?为什么它会以这种方式工作?
\n\nUPD:添加了conf.py。每次本地导入都会失败,蓝图也会失败,具体取决于导入的顺序。
from re import findall\n\nclass ErrorResponses:\n usernameOrPasswordBlank = {\n "success": False,\n "error": "Username and password cannot be blank."\n }\n userAlreadyExists = {"success": False, "error": "Such user already exists"}\n incorrectData = {\n "success": False,\n "error": "Incorrect username or password"\n }\n invalidData = {\n "success": False,\n "error": "Username or password is invalid"\n }\n noUser = {\n "success": False,\n "error": "There is no user with such username or public_id"\n }\n ...\nRun Code Online (Sandbox Code Playgroud)\n
我可以看到您解决了问题,但我想向您展示比安装flask-script和创建manage.py文件更简单的解决方案。您只需删除__init__.py与 app.py 文件同一级别的文件即可。它为我解决了问题。干杯:)