zoukankan      html  css  js  c++  java
  • python-根据左右值获取城市区域编码

    def get_adcode(city):
        """
        根据城市获取区域编码
        :param city:
        :return:
        """
        db = dbTool.conDB(dbTool.MYSQLDB, dbTool.MYSQLDBNAME)
        sql = "SELECT adcode,dispname,lft,rgt,dep FROM citycode_rela WHERE dispname LIKE '"+city+"%'"
        result = list(db.query(sql))
        if not result:
            return result
        else:
            adlist = []
            for addict in result:
                param1 = {'adcode': addict['adcode'], 'dispname': addict['dispname'], 'lft': addict['lft'], 'rgt': addict['rgt']}
                if addict['rgt'] - addict['lft'] > 1: #根据左右值判断是否是最后一级
                    sql1 = ""
                    
                    if addict['dep'] == 3: #判断是否是第三级,如何济南市 淄博市,用来取省份
                        sql1 += " SELECT $adcode AS adcode,$dispname AS dispname,dispname AS supername " 
                                "FROM citycode_rela WHERE lft<$lft AND rgt>$rgt AND dep=2 UNION"
    
                    #取出该级下的所有下一级
                    sql1 += " SELECT adcode,dispname,$dispname AS supername FROM citycode_rela WHERE lft>$lft AND rgt<$rgt "
                    adlist.extend(list(db.query(sql1, vars=param1)))
                    
                else: # 最后一级
                    
                    #用来取省份
                    sql2 = "SELECT dispname AS supername,$adcode AS adcode,$dispname AS dispname " 
                           "FROM citycode_rela WHERE lft<$lft AND rgt>$rgt AND dep=2"
                    
                    adlist.extend(list(db.query(sql2, vars=param1)))
            return sorted(adlist, key=lambda x: x['adcode'], reverse=False)
    View Code

    res = get_adcode('山东')
    for item in res:
        print ''.join([item['supername'],'-',item['dispname'],'-',str(item['adcode'])])

    结果:  

    山东省-济南市-370100
    山东省-历下区-370102
    山东省-市中区-370103
    山东省-槐荫区-370104
    山东省-天桥区-370105
    山东省-历城区-370112
    山东省-长清区-370113

    .....

    res = get_adcode('济南')
    for item in res:
        print ''.join([item['supername'],'-',item['dispname'],'-',str(item['adcode'])])

    结果:

    山东省-济南市-370100
    济南市-历下区-370102
    济南市-市中区-370103
    济南市-槐荫区-370104
    济南市-天桥区-370105
    济南市-历城区-370112

    res = get_adcode('历下区')
    for item in res:
        print ''.join([item['supername'],'-',item['dispname'],'-',str(item['adcode'])])

    结果:

    山东省-历下区-370102

    参考数据:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

  • 相关阅读:
    第6月第4天 AVMutableComposition AVMutableVideoComposition
    error: WatchKit App doesn't contain any WatchKit Extensions whose WKAppBundleIdentifier matches
    领导力和管理的区别是什么?
    小企业如何做好员工管理?
    市场营销案例书籍,市场营销必看的书籍推荐
    情商书籍排行榜:这6本书让你更好地做自己
    市场营销原理,看完这本书你才能懂什么叫市场营销
    能帮你提高情商的书籍推荐
    销售人员最该看的书:《销售管理必读12篇》
    适合初学者看的管理类书籍推荐
  • 原文地址:https://www.cnblogs.com/yourancao520/p/4097177.html
Copyright © 2011-2022 走看看