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

标签 python sql

我试图在 sql 数据库中搜索名字为“blah”的所有用户,并通过 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() 来查找所有用户,但我如何连接详细信息?

最佳答案

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

示例:

   db = mysql.connection.cursor()

   # query
   db.execute('SELECT * FROM user')

   # returned columns
   header = [x[0] for x in db.description]

   # returned rows
   results = db.fetchall()

   #data to be returned
   users_object = {}

   #structure results 
   for result in results:
        users_object[result["user_id"]] = dict(zip(header,result))

   return jsonify(users_object)

正如您在“#structure results”下看到的那样,您只需遍历结果并将每一行的数据插入到 users_object 中,例如键等于“user_id”。

如果您想要数组中的结果,只需将 users_object 转换为数组即可,例如users_array 并将字典附加到循环中的数组

关于python - 如何在python中的循环中连接结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53292039/

相关文章:

mysql - SQL 使用两列索引或两个单索引(x = ? and y > ?)

sql - 如何在不存在的地方进行插入?

php - 如何根据同一 SELECT 中的不同 ID 从表中获取两个值

python - 如何在 python 中只比较日期(而不是时间)

python - Django通过外键查询订单(反方向)

python - 通过另一个 couchdb 文档中的 id 从一个 couchdb 文档中提取数据 (Python)

sql - 我应该使用生效日期还是开始日期和结束日期进行历史记录?

php - 如果MySQL表中有多条相同的记录,如何只选择一条记录

python - turtle 图形窗口没有响应

python - 使用字符串在python中调用导入的函数