【问题标题】:How to import MySQL from main app.py file? circular import issue如何从主 app.py 文件导入 MySQL?循环导入问题
【发布时间】:2019-07-14 18:37:57
【问题描述】:

如何将 MySQL 配置添加到 Flask 应用程序并创建游标并在其他类中使用?

我有 2 个文件:

app.py:

from flask import Flask
from flask_restful import Api
from Query import Query
from flask_mysqldb impoty MySQL

app= Flask(__name__)
api = Api(app)

api.add_resouce(Query,'/')

app.config['MYSQL_HOST'] = 'host'
#(same for user, password, db)

mysql = MySQL(app)

查询.py:

我正在尝试从 app.py 导入 mysql,以便可以在我的数据库上执行 SQL。

 from flask_restfull import Resource
 from app import mysql 

class Query(Resource):
    def get(self):
    pass

错误是由循环导入引起的。如何解决?

"无法导入名称'查询'

【问题讨论】:

    标签: flask flask-sqlalchemy flask-restful


    【解决方案1】:

    在另一个文件中初始化 mysql,并从query.pyapp.py 中引用它。使用MySQL.init_app方法将其注入应用程序

    https://flask-mysqldb.readthedocs.io/en/latest/#flask_mysqldb.MySQL

    # database.py
    from flask_mysqldb import MySQL
    mysql = MySQL()
    
    # query.py
    from database import mysql # <--!!!
    from flask_restfull import Resource
    
    class Query(Resource):
        def get(self):
            pass
    
    # app.py
    from flask import Flask
    from flask_restful import Api
    from database import mysql # <--!!!
    from query import Query
    
    app = Flask(__name__)
    api = Api(app)
    api.add_resouce(Query,'/')
    app.config['MYSQL_HOST'] = 'host'
    
    mysql.init_app(app) # <--!!!
    

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2020-07-11
      • 1970-01-01
      • 2016-05-07
      • 2021-09-11
      相关资源
      最近更新 更多