Python 如何在blueprint中使用flask_mysqldb
我正在使用带有蓝图的flask_mysqldb,我想初始化MySQL,但我有一个错误: app.config.setdefault('MYSQL\u HOST','localhost')属性错误: “Blueprint”对象没有属性“config” 我在这里创建应用程序Python 如何在blueprint中使用flask_mysqldb,python,flask,Python,Flask,我正在使用带有蓝图的flask_mysqldb,我想初始化MySQL,但我有一个错误: app.config.setdefault('MYSQL\u HOST','localhost')属性错误: “Blueprint”对象没有属性“config” 我在这里创建应用程序 from flask import Flask from flask_cors import CORS from .bodega import bodega def create_app(): app = Flask
from flask import Flask
from flask_cors import CORS
from .bodega import bodega
def create_app():
app = Flask(__name__)
cors = CORS(app, resources=r'/*')
app.config['MYSQL_HOST'] = "localhost"
app.config['MYSQL_USER'] = "root" # Usuario de la base de datos
app.config['MYSQL_PASSWORD'] = "" # Contraseña de la base de datos
app.config['MYSQL_DB'] = "inventario_bodega" # Nombre de la base de datos
app.config['SECRET_KEY'] = 'thisisthesecrectkey_de_uepc_2019'
# app.config.from_object(Config)
app.register_blueprint(bodega)
return app
那是我的蓝图
from flask import Blueprint
bodega = Blueprint("bodega", __name__, url_prefix="/bodega")
from . import views
from flask import jsonify
from datetime import datetime
from . import bodega
from flask_mysqldb import MySQL
from app import db # Import from app here
@bodega.route('/show', methods=['GET'])
def show_bodega():
try:
cur = db.connection.cursor() # create a cursor
cur.execute(
"""SELECT * FROM bodega
join item on bodega.id_item = item.id_item
join usuarios on bodega.id_usuario = usuarios.id_usuario
join images on bodega.id_image = images.id_image"""
)
data = cur.fetchall()
cur.close()
return jsonify(data), 202
except:
return "Error al extraer datos", 500
这里我想使用MySQL
from flask import jsonify
from datetime import datetime
from . import bodega
from flask_mysqldb import MySQL
# the error is here
mysql = MySQL(bodega)
@bodega.route('/show', methods=['GET'])
def show_bodega():
try:
cur = mysql.connection.cursor()
cur.execute(
"""SELECT * FROM bodega
join item on bodega.id_item = item.id_item
join usuarios on bodega.id_usuario = usuarios.id_usuario
join images on bodega.id_image = images.id_image"""
)
data = cur.fetchall()
cur.close()
return jsonify(data), 202
except:
return "Error al extraer datos", 500
应用程序要求我将配置传递给blueprint,但我不知道问题在下面一行
mysql = MySQL(bodega)
相反,您应该将应用程序传递给MySQL
app = create_app()
mysql = MySQL(app)
更多的考虑,阅读文档: 这个库对我来说几乎是死了。上几乎没有任何活动,所有这些都将被覆盖
您不想在蓝图中初始化db连接。您希望它出现在您的应用程序工厂中
from flask import Flask
from flask_cors import CORS
from .bodega import bodega
from flask_mysqldb import MySQL # Add the import in __init__
db = MySQL()
def create_app():
app = Flask(__name__)
cors = CORS(app, resources=r'/*')
app.config['MYSQL_HOST'] = "localhost"
app.config['MYSQL_USER'] = "root"
app.config['MYSQL_PASSWORD'] = ""
app.config['MYSQL_DB'] = "inventario_bodega"
app.config['SECRET_KEY'] = 'thisisthesecrectkey_de_uepc_2019'
db.init_app(app) # Initialise with the new app
app.register_blueprint(bodega)
return app
然后将数据库(db)导入到蓝图中
from flask import Blueprint
bodega = Blueprint("bodega", __name__, url_prefix="/bodega")
from . import views
from flask import jsonify
from datetime import datetime
from . import bodega
from flask_mysqldb import MySQL
from app import db # Import from app here
@bodega.route('/show', methods=['GET'])
def show_bodega():
try:
cur = db.connection.cursor() # create a cursor
cur.execute(
"""SELECT * FROM bodega
join item on bodega.id_item = item.id_item
join usuarios on bodega.id_usuario = usuarios.id_usuario
join images on bodega.id_image = images.id_image"""
)
data = cur.fetchall()
cur.close()
return jsonify(data), 202
except:
return "Error al extraer datos", 500
我试图这么做,但我在应用程序导入中遇到了一个错误
创建应用程序导入错误:无法从“应用程序”(C:\Users\Becario\Desktop\uepc bodega backend\app\\ u init_uu.py)导入名称“创建应用程序”
我认为iMot还有一些其他问题