#id | title | series | series_position | author | img_url | object_key | e_tag | page_number
鉴于我具有上面的表格列,从单个查询中获取以下数据顺序的正确查询是什么:
[author1:{
[series1:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]],
[series2:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]],
[series3:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]]]
},
author2:{
[series1:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]],
[series2:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]],
[series3:[{title:title1,series_position:1},{title:title2,series_position:2},{title:title3,series_position:3}]]]
}]
目前我正在做这样的事情:
books = Books.query.order_by(Books.author).all()
authors = sorted(set(book.author for book in books))
之后,我执行类似下面的伪代码的操作,以在Jinja中显示数据:
{%for author is authors%}:
<div id={{author}}>
for book in books
if author in book.author:
<li><a>book.title,book.series,book.series_position</a></li>
</div>
{%endfor%}
答案 0 :(得分:1)
这应该给出您想要的数据结构(以字典格式):
import pandas as pd
conn=... #your sql connection to your database here
df=pd.read_sql('select * from Books', conn)
d={}
for i in set(df.author):
d[i]={}
df2=df[df.author==i]
for k in set(df2.series):
d[i][k]=[]
df3=df2[df2.series==k]
for j in range(len(df3)):
d[i][k].append({'title':df3['title'].iloc[j], 'series_position':df3['series_position'].iloc[j]})