如何在python中的循环中连接结构

时间:2018-11-14 01:48:24

标签: python sql

我正在尝试在名字为“ blah”的sql数据库中搜索所有用户,并通过ajax调用将该数据返回给我的html。我可以像这样的单个用户使用此功能:

user = db.execute(
            'SELECT * FROM user WHERE genres LIKE ?', (str,)
        ).fetchone()
        user_details = {
            'first': user['first'],
            'last': user['last'],
            'email': user['email']
        }
        y = json.dumps(user_details)
        return jsonify(y)

现在对于多个用户,我希望结构看起来像这样:

users{
    user1_details = {
        'first': user['first'],
        'last': user['last'],
        'email': user['email']
    }
    user2_details = {
        'first': user2['first'],
        'last': user2['last'],
        'email': user2['email']
    }
    user3_details = {
        'first': user3['first'],
        'last': user3['last'],
        'email': user3['email']
    }
}

在循环中生成每个user_details。我知道我可以使用fetchall()查找所有用户,但是如何连接详细信息?

2 个答案:

答案 0 :(得分:2)

在查询后获取所有行,然后根据需要构造结果。

示例:

private static Logger logger = LogManager.getLogger(ReadDataFromPGDB.class);

如您在“#结构结果”下所见,您只需遍历结果并将每行的数据插入键值为“ user_id”的users_object中。

如果要将结果存储在数组中,只需将users_object转换为数组,例如users_array并将字典附加到循环内的数组上

答案 1 :(得分:0)

所需的users词典中的键似乎并不是特别有用,因此您可以构建用户词典列表。直接从fetchall()转到这样的列表很容易:

result = db.execute('SELECT * FROM user WHERE genres LIKE ?', (str,))
users = [{'first': first, 'last': last, 'email': email} for first, last, email in result.fetchall()]
return jsonify(users)

要返回包含用户列表的字典,请执行以下操作:

return jsonify({'users': users})