Python 获取由另一个表连接的主类别下的子类别
例如,当前数据库有一个类别表、子类别表和一个数据表,其中每一行都有一个相关的类别id和子类别id作为外键。可以有多个属于同一类别和子类别的数据行。类别和子类别不是直接相关的,而是通过数据表进行的。需求是生成json响应,其中返回所有类别及其下的子类别。所需的响应如下所示Python 获取由另一个表连接的主类别下的子类别,python,sql,pymysql,rdms,Python,Sql,Pymysql,Rdms,例如,当前数据库有一个类别表、子类别表和一个数据表,其中每一行都有一个相关的类别id和子类别id作为外键。可以有多个属于同一类别和子类别的数据行。类别和子类别不是直接相关的,而是通过数据表进行的。需求是生成json响应,其中返回所有类别及其下的子类别。所需的响应如下所示 { "categories":[ { "id": 1, "name": "catego
{
"categories":[
{
"id": 1,
"name": "category one",
"sub_categories": [
{
"id": 1,
"name": "name 1"
},
{
"id": 2,
"name": "name 2"
}
]
}]
}
使用下面的sql guery(JSON_对象和JSON_数组)可以生成上面的响应
cursor = connection.cursor()
sql = "select JSON_OBJECT('id',p.`id`,'name',`p`.`name`, 'slug', `p`.`name` " \
"'subcategory', " \
"(select JSON_ARRAYAGG(" \
" JSON_OBJECT('id',`m`.`id`,'name',`m`.`name`)" \
")`subcategory`" \
" from data t inner join subcategories m on `m`.`id`=`t`.`subcategory_id`" \
" where `t`.`category_id` = `p`.`id` and `t`.`deleted_at` is null )" \
")`categories`" \
" from categories p;"
cursor.execute(sql)
result = cursor.fetchall()
categories = json.loads(json.dumps(result, default=convert_object_to_string))
category_data=[]
for row in categories:
category_data.append(json.loads(row[0]))
我想要一个更好的解决方案,并且只返回不同的值