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

相关文章:

  • 2022-12-23
  • 2022-01-13
  • 2021-06-17
  • 2022-12-23
  • 2021-11-17
  • 2021-10-15
  • 2022-12-23
  • 2022-01-20
猜你喜欢
  • 2021-07-27
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案