我正在尝试在名字为“ 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()查找所有用户,但是如何连接详细信息?
答案 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})