我正在使用 Flask 和 SqlAlchemy,情况是我有一个主数据库,然后我有几个数据库,我可以在其中获取其他类型的信息。但是凭据未定义为固定的,因此我必须从主数据库中的表中获取它们,具体取决于用户所在的工厂。为此,我使用 SQLALCHEMY_BINDS。问题是,当我尝试将连接字符串传递给 Bind 时,我告诉自己返回它的函数脱离了上下文。这里有一部分代码
def scadaConnect():
print("################################################")
print("################################################")
print("################################################")
print("################################################")
idplanta_session=str(session['idPlanta'])
usernamequery = db.session.query(Scada.usernameScada).filter(Scada.idPlanta=='5')
hostquery = db.session.query(Scada.hostScada).filter(Scada.idPlanta=='5')
passwordquery = db.session.query(Scada.passScada).filter(Scada.idPlanta=='5')
nombredbquery = db.session.query(Scada.nombrebdScada).filter(Scada.idPlanta=='5')
nombredb = str(nombredbquery[0])[2:len(nombredbquery[0])-4]
host = str(hostquery[0])[2:len(hostquery[0])-4]
password = str(passwordquery[0])[2:len(passwordquery[0])-4]
username = str(usernamequery[0])[2:len(usernamequery[0])-4]
connexion = 'mysql+pymysql://'+username+":"+password+"@"+host+"/"+nombredb+"'"
def retorno():
return str(connexion)
from config import SQLALCHEMY_BINDS
SQLALCHEMY_BINDS['scada']= scadaConnect()
错误如下
运行时错误:在请求上下文之外工作。
这通常意味着您尝试使用需要活动 HTTP 请求的功能。有关如何避免此问题的信息,请参阅有关测试的文档。
您的代码必须从视图中调用,因此存在“请求上下文”。
您还应该查看官方文档:
https://flask.palletsprojects.com/en/1.1.x/reqcontext/
我很确定 stackoverflow 不允许非英文内容,您的问题很快就会结束。
不要射击信使,这不是我的主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句