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?