tutorial quick query guide espaƱol python flask import sqlalchemy blueprint

python - quick - matraz-blueprint-sqlalchemy-no se puede importar el nombre ''db'' en el archivo moles



sqlalchemy select (1)

Este es un problema simple pero frustrante. El problema es que está importando principal BEFORE crear la instancia de db en su __init__.py

Si mueve la importación a después de su db = SQLAlchemy(app) , funcionará:

from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config[''SQLALCHEMY_DATABASE_URI''] = ''mysql+pymysql://uername:password@localhost/test'' db = SQLAlchemy(app) from bookshelf.main.controllers import main #<--move this here app.register_blueprint(main, url_prefix=''/'')

Soy nuevo en bluprint y tengo problemas para importar db en el archivo mydatabase.py, que es el archivo de modelos.

Me he enfrentado a este error:

ImportError: no se puede importar el nombre ''db''

El árbol de mi proyecto

nikoofar/ run.py bookshelf/ __init__.py mydatabase.py main/ controllers.py __init__.py

run.py

from bookshelf import app if __name__ == ''__main__'': app.run(debug=True, port=8000)

estantería / intit .py

from flask import Flask from bookshelf.main.controllers import main from flask_sqlalchemy import SQLAlchemy from mydatabase import pmenu app = Flask(__name__, instance_relative_config=True) db = SQLAlchemy(app) db.init_app(app) application.config[''SQLALCHEMY_DATABASE_URI''] = ''mysql+pymysql://username:password@localhost/databasename'' app.config.from_object(''config'') app.register_blueprint(main, url_prefix=''/'')

estantería / principal / controllers.py

from flask import Blueprint from bookshelf.mydatabase import * from flask_sqlalchemy import SQLAlchemy main = Blueprint(''main'', __name__) @main.route(''/'') def index(): g = pmenu.query.all() print (g) return "ok"

El problema se remonta a from bookshelf import db , y si lo elimino, el error se cambiará a:

ImportError: no se puede importar el nombre ''db''

estantería / mydatabase.py

from bookshelf import db class pmenu(db.Model): __tablename__ = ''p_menu'' id = db.Column(db.Integer, primary_key=True) txt = db.Column(db.String(80), unique=True) link = db.Column(db.String(1024)) def __init__(self, txt, link): self.txt = txt self.link = link def __repr__(self): return "{''txt'': " + self.txt + ", ''link'':" + self.link + "}"

¿Alguna solución?