首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在请求上下文之外工作。烧瓶,SqlAlchemy

在请求上下文之外工作。烧瓶,SqlAlchemy
EN

Stack Overflow用户
提问于 2021-03-09 03:16:32
回答 1查看 55关注 0票数 0

我正在使用Flask和SqlAlchemy,情况是我有一个主数据库,然后我有几个数据库,在那里我可以获得其他信息。但是凭据没有被定义为固定的,所以我必须从主数据库中的一个表中获取它们,这取决于用户所在的工厂。为此,我使用SQLALCHEMY_BINDS。问题是,当我试图将连接字符串传递给Bind时,我告诉自己返回它的函数是脱离上下文的。下面是代码的一部分

代码语言:javascript
复制
def scadaConnect():
    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()

错误如下

RuntimeError:在请求上下文之外工作。

这通常意味着您试图使用需要活动HTTP请求的功能。有关如何避免此问题的信息,请参阅有关测试的文档。

EN

回答 1

Stack Overflow用户

发布于 2021-03-09 16:35:38

session (scadaConnect()中的第一行)仅在请求上下文中可用。视图。它驻留在客户端的会话cookie中,只有当浏览器发出请求时,它才被发送到服务器(并且对您的视图可用)。

如果您想使用session,则必须将对scadaConnect()的调用移动到视图中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66535804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档