Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中解析sqlalchemy.engine.result.RowProxy_Python_Json_Postgresql - Fatal编程技术网

在Python中解析sqlalchemy.engine.result.RowProxy

在Python中解析sqlalchemy.engine.result.RowProxy,python,json,postgresql,Python,Json,Postgresql,我有一个问题,我无法解析sql(postgres)查询给出的结果。对于查询,我使用前面编写的db函数(s_check())。下面是一个片段: def s_check(): for json_str in db.engine.execute("select to_json(s_check())"): print json_str // ('{"query":"each device has user","pass":true}',) prin

我有一个问题,我无法解析sql(postgres)查询给出的结果。对于查询,我使用前面编写的db函数(s_check())。下面是一个片段:

def s_check():
    for json_str in db.engine.execute("select to_json(s_check())"):
        print json_str
        // ('{"query":"each device has user","pass":true}',)
        print type(json_str)
        // <class 'sqlalchemy.engine.result.RowProxy'>
        print json_str[0]
        // {"query":"each device has user","pass":true}
        print json_str[0]['pass']
        // TypeError: string indices must be integers, not str
def s_check():
对于db.engine.execute中的json_str(“select to_json(s_check())”):
打印json_str
//(“{”查询“:“每个设备都有用户”,“通过”:true},)
打印类型(json_str)
// 
打印json_str[0]
//{“query”:“每个设备都有用户”,“pass”:true}
打印json_str[0]['pass']
//TypeError:字符串索引必须是整数,而不是str
有趣的是,当我在服务器上部署此代码时,我的应用程序正在工作,并且没有此错误,这在本地不起作用


谢谢

您确定在您的开发/生产环境中,db功能
s_check
完全相同吗?确定之后,我会检查您与数据库的连接是否以完全相同的方式设置。在本地看起来,
json\u str[0]
是一个
字符串
,但在prod上它是一个
dict
。您能添加一个调试行来验证这一点吗?您好,再次感谢您的评论。是的,我确信这两个函数(s_check和to_json)在dev和prod环境中是相同的。此外,我设法在prod上调试了它,是的,json_str[0]在我的开发端是字符串,在我的prod端是dict。但是我仍然找不到这种行为的原因。此外,在我的开发端打印输出:({u'query':u'each device have user',u'pass':False},{u'query':u'each device have user',u'pass':False}更进一步。Postgres client_编码在两侧均为utf-8表定义在两个位置是否相同?博士后版本?还要确保所有python库(特别是sqlalchemy)在两种环境中都是相同的版本。这两种环境之间必须有所不同。您的应用程序中是否有任何显式逻辑在dev和prod上执行不同的操作?对不起,我没有主意了。但是这个bug似乎根本不在您发布的代码中。您确定db函数
s_check
在您的开发/产品环境中是完全相同的吗?确定之后,我会检查您与数据库的连接是否以完全相同的方式设置。在本地看起来,
json\u str[0]
是一个
字符串
,但在prod上它是一个
dict
。您能添加一个调试行来验证这一点吗?您好,再次感谢您的评论。是的,我确信这两个函数(s_check和to_json)在dev和prod环境中是相同的。此外,我设法在prod上调试了它,是的,json_str[0]在我的开发端是字符串,在我的prod端是dict。但是我仍然找不到这种行为的原因。此外,在我的开发端打印输出:({u'query':u'each device have user',u'pass':False},{u'query':u'each device have user',u'pass':False}更进一步。Postgres client_编码在两侧均为utf-8表定义在两个位置是否相同?博士后版本?还要确保所有python库(特别是sqlalchemy)在两种环境中都是相同的版本。这两种环境之间必须有所不同。您的应用程序中是否有任何显式逻辑在dev和prod上执行不同的操作?对不起,我没有主意了。但是这个bug似乎根本不在你发布的代码中。