我得到了两张桌子。
class tbl_vocabulary(db.Model):
id = db.Column(db.Integer, primary_key=True)
word = db.Column(db.String(32), index=True)
gram_term_id = db.Column(db.Integer, db.ForeignKey('tbl_grammatical_term.id'))
class tbl_grammatical_term(db.Model):
id = db.Column(db.Integer, primary_key=True)
short_name = db.Column(db.String(16))
这是一个简单的1:N关系,一个语法术语可以属于许多词汇条目。我想获得一个词汇表,其中列出了多少名词,动词等。
我可以通过以下查询得到它。
tbl_vocabulary.query.with_entities(tbl_grammatical_term.short_name, tbl_vocabulary.gram_term_id, func.count(tbl_grammatical_term.short_name)).outerjoin(tbl_grammatical_term).group_by(tbl_grammatical_term.short_name).all()
所以我得到了这样的嵌套列表:
[('ADV', 1, 15), ('N', 13, 137), ('V', 9, 48)]
具有以下信息:
[(tbl_grammatical_term.short_name, tbl_vocabulary.gram_term_id, count)]
那我该如何摆脱tbl_vocabulary.gram_term_id?
答案 0 :(得分:0)
如果您需要快速而又肮脏的解决方案来仅提取short_name并从结果中计数,则可以使用列表理解:
a = [('ADV', 1, 15), ('N', 13, 137), ('V', 9, 48)]
b = [(x,z) for (x,_,z) in a]
b
将具有以下值:
[('ADV', 15), ('N', 137), ('V', 48)]