我有可以查询学生信息的表格,现在我想知道男女学生的人数。使用普通的SQL,我可以使用它
select student_gender, count(student_gender) from student_registration group by student_gender;
小搜索后,我发现SQLAlchemy具有以下等效性
gender = db.session.query(Student_Registration.student_gender, \
func.count(Student_Registration.student_gender))\
.group_by(Student_Registration.student_gender).all()
现在我要打印所需的输出。使用
for b in gender:
print(b.student_gender)
如何打印计数?我尝试了b.count但它显示了
Female <built-in method count of result object at 0x7fac60f21240>
Male <built-in method count of result object at 0x7fac60f21288>
答案 0 :(得分:0)
您已经创建了查询,现在您必须执行查询并检索结果(是的,当我第一次启动时,它也使我感到困惑)。为此,请使用现有的并添加以下内容...
假设您尚未连接到数据库(实际上可能已经连接了-用正确的参数替换连接-数据库连接字符串,uid,pw ...)...
qry_engine = create_engine('mysql+pymysql://uid:pw@localhost:3306/charset=utf8mb4',
pool_recycle=3600, echo=False)
然后添加如下内容
rslt = qry_engine.execute(gender).fetchall()
for rslt_row in rslt:
print(str(rslt_row))
我实际上并没有运行这些命令,因此我可能稍微弄糟了语法,但是解释器应该告诉您我在哪里出错了(请告诉我,我将修改答案)。希望对您有帮助!
答案 1 :(得分:0)
您可以使用label
gender = db.session.query(Student_Registration.student_gender, \
func.count(Student_Registration.student_gender).label('count'))\
.group_by(Student_Registration.student_gender).all()
for b in gender:
print(b.student_gender, b.count)