首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更好的SQL结果赋值方法

更好的SQL结果赋值方法
EN

Stack Overflow用户
提问于 2017-10-31 03:58:33
回答 1查看 42关注 0票数 0

我编写的代码获取某个专业的学生列表,并分配该年每个专业招收的学生人数。

代码语言:javascript
复制
Format of SQL TABLE: |count(int)|School(var)|Code(var)|Concentration(var)|

对于我来说,将sql结果值赋给python变量还有什么更好的选择呢?现在,我已经使用IF语句对这些值进行了硬编码,以查看它们是否与名称匹配。如果是,则将第一列中的SQL值赋给一个变量。现在就行了,因为我知道所有东西都在哪。但是,如果在我的表中添加或删除了一行,它将不起作用。

有没有办法修改这段代码,使其不像目前那样依赖于行。

代码语言:javascript
复制
def grabmajorStartcc():
    sql = ("SELECT count ([2015F Hist].Spridenspriden_ID) AS COUNT, [2015F Hist].SGBSTDNSGBSTDN_COLL_CODE_1 as School, [2015F Hist].SGBSTDNSGBSTDN_MAJR_CODE_1 as Code, [2015F Hist].SGBSTDNSGBSTDN_MAJR_CODE_CONC_1 as concentration "
            "FROM [2015F Hist] "
            "WHERE [2015F Hist].SGBSTDNSGBSTDN_COLL_CODE_1 IN ( 'CC', 'CO', 'LA', 'SB', 'SI', 'SM') "
            "AND [2015F Hist].Cohort_desc = '2015 Fall First Time Trad' "
            "GROUP BY [2015F Hist].SGBSTDNSGBSTDN_COLL_CODE_1, [2015F Hist].SGBSTDNSGBSTDN_MAJR_CODE_1, [2015F Hist].SGBSTDNSGBSTDN_MAJR_CODE_CONC_1 "
            "ORDER BY  [2015F Hist].SGBSTDNSGBSTDN_COLL_CODE_1, [2015F Hist].SGBSTDNSGBSTDN_MAJR_CODE_1")
    cur.execute(sql)
    result = cur.fetchall()
    conn.commit()
    if(result[0][3] == 'CMGD'):
        grabmajorStartcc.cmgd = result[0][0]
    if (result[1][3] == 'CMSD'):
        grabmajorStartcc.cmsd = result[1][0]
    if (result[2][3] == 'ITSS'):
        grabmajorStartcc.itss = result[2][0]
    if (result[3][3] == 'ITST'):
        grabmajorStartcc.itst = result[3][0]
    if (result[4][2] == 'MAAM'):
        grabmajorStartcc.maam = result[4][0]
    if (result[5][2] == 'MATE'):
        grabmajorStartcc.mate = result[5][0]
    if (result[6][2] == 'MATH'):
        grabmajorStartcc.math = result[6][0]
EN

回答 1

Stack Overflow用户

发布于 2017-10-31 10:18:57

考虑使用关键字作为查询的分组值的字典,CMGD、CMSD、ITSS……值将是聚合计数。下面运行字典理解,一个用于集中,另一个用于游标行读取上的major_code。

代码语言:javascript
复制
def grabmajorStartcc():

    sql = ...

    cur.execute(sql)
    result = cur.fetchall()

    grabmajorStartcc.concentration = {row[3]:row[0] for row in result}
    # grabmajorStartcc.concentration['CMGD'] 
    # grabmajorStartcc.concentration['CMSD'] 
    # ...

    grabmajorStartcc.major_code = {row[2]:row[0] for row in result}
    # grabmajorStartcc.major_code['MAAM']     
    # grabmajorStartcc.major_code['MATE']  
    # ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47023243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档