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'])])html

結果:  sql

山東省-濟南市-370100
山東省-歷下區-370102
山東省-市中區-370103
山東省-槐蔭區-370104
山東省-天橋區-370105
山東省-歷城區-370112
山東省-長清區-370113ide

.....編碼

 

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

結果:code

山東省-濟南市-370100
濟南市-歷下區-370102
濟南市-市中區-370103
濟南市-槐蔭區-370104
濟南市-天橋區-370105
濟南市-歷城區-370112htm

 

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

結果:ci

山東省-歷下區-370102get

 

參考數據:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

相關文章
相關標籤/搜索