python - Flask/Python 中的 SQL:不同的值?
问题描述
我有一个规范化的数据库,我创建了一个查询来选择口袋妖怪的类型。
SELECT pokedata.name, poketypes.type
FROM pokedata
LEFT JOIN poketypes
ON pokedata.pokeID = poketypes.pokeID
输出
+-----------+--------+
| Name | Type |
+-----------+--------+
| Bulbasaur | grass |
| Bulbasaur | poison |
| Ivysaur | grass |
| Ivysaur | poison |
| Venusaur | grass |
| Venusaur | poison |
+-----------+--------+
但是,在 Flask 或 Python 中,我不确定如何在不重复名称值的情况下获取并使用此查询。
这是我目前拥有的:
口袋妖怪.py
pokemon = conn.execute("SELECT p.name, poketypes.type FROM pokedata AS p LEFT JOIN poketypes ON p.pokeID = poketypes.pokeID")
return render_template('index.html', pokemon=pokemon)
索引.html
{% for row in pokemon %}
{{ row['name'] }} has types {{ row['type'] }}
{% endfor %}
Output
Bulbasaur has types grass
Bulbasaur has types poison
这是我希望输出的内容(我假设我需要一个循环,但我不确定如何实现它)
Bulbasaur has types grass, poison
Ivysaur has types grass, poison
(我不确定什么标题有意义 - 请随意提出更好的标题!)
解决方案
使用默认字典
from collections import defaultdict
rows=[['Bulbasaur','grass'],
['Bulbasaur','poison '],
['Ivysaur','grass']
]
d=defaultdict(list)
for row in rows:
d[row[0]].append(row[1])
for k,v in d.items() :
print(f"{k} has types {', '.join(v)} ")
Bulbasaur 有草类、毒类
常春藤有草种
推荐阅读
- machine-learning - 计算负 ELBO
- android - Android:是否可以在通话期间让应用程序与来电者通话?
- c++ - OnComponentBeginOverlap.AddDynamic 说没有函数模板的实例与参数列表匹配?
- python - 无法在 Gitbash 上的 virtualenv 中运行服务器“无法导入 Django。您确定它已安装并且
- powerbi - 我可以在我工作的组织中安装 Power BI 报表服务器的开发人员版并在本地环境中创建门户吗?
- prometheus - 计算节点级别的内存利用率[prometheus]
- android - 来自前台服务的 Android 播放振动
- python - 如何组合通过 np.zeros(src_img.shape[:2], np.uint8) 和 np.zeros(differentimage.shape[:2], np.uint8) 获得的两个图像掩码?
- windows - 如何使用 Powershell 找出服务何时重新启动
- c++ - Cmake 找不到 Autoware_msgsConfig