全国省,市,县,镇的数据表外加经纬度

不能总是授人以鱼,今天把实现的方式也给大家列出来!

实现语言用的是python。python刚开始学两周,有不好的地方,各位兄台别笑。

不啰嗦了,直接贴。

下面是数据库的部分封装

# -*- coding: utf-8 -*-
import pymysql

'db module'
__author__ = 'liulaosan'


class DbHelper(object):
    def __init__(self, host='127.0.0.1', user='root', password="",
                 database=None, port=3306):
        self.database = database
        self.port = port
        self.host = host
        self.user = user
        self.password = password
        self.conn = None
        self.cur = None
        self.connect()

    def connect(self):
        self.conn = pymysql.connect(self.host, self.user, self.password, self.database, self.port, charset="utf8")
        self.cur = self.conn.cursor()
        return self

    def execute(self, sql):
        try:
            self.cur.execute(sql)
        except Exception as e:
            raise e
        return self

    def save(self):
        try:
            self.conn.commit()
        except Exception as e:
            self.conn.rollback()

    def update(self):
        self.save()

    def select(self):
        try:
            result = self.cur.fetchall()
        except Exception as e:
            raise e
        return result

    def close(self):
        self.cur.close()
        self.conn.close()


if __name__ == '__main__':
    db = DbHelper('192.168.0.128', 'root', 'root', 'python')
    result = db.execute("select * from cms_areas").select()
    print(result)

 

得到地区用接口是从百度里面找到的,用着还可以,不过他直接返回了一个List

所以我也就处理了一下,得到了数据表

下面是处理方式:

 

# -*- coding: utf-8 -*-
import requests
import DbHelper

cityData = requests.get("http://res.42du.cn/static/json/region/prov-town.json")

db = DbHelper.DbHelper('192.168.0.128', 'root', 'root', 'python')
try:
    cityJson = cityData.json()
except:
    print('ValueError:', "没有json数据")


def stringToList(str):
    return str.split(":")


for city in cityJson:
    lCity = stringToList(city)
    cityNum = lCity[0]
    cityStr = lCity[1]
    pid = 0
    if len(cityNum) % 2 == 0 and len(cityNum) > 2:
        pid = cityNum[:-2]
    elif len(cityNum) > 3:
        pid = cityNum[:-3]
    try:
        pid = int(pid)
        depth = len(cityNum) / 2
    except ValueError as e:
        print("转换错误")
    sql = '''
             insert into `cms_areas3`(`id`,`name`,`pid`,`depth`) values (%d,'%s',%d,%d)
          ''' % (int(cityNum), cityStr, pid, depth)
    print(sql)
    db.execute(sql).save()
db.close()

print('success')

 

引了一个库,爬虫的时候经常用,想必大家都认识。

 

数据库配置的是我自己虚拟机里面的,因为数据库的那个封装的不是太好,所以,底下操作的时候有 insert into 表名,大家一起看着改了就行。

后面的时候,我又连接了高德的地图api,把数据表中的地址的经纬度弄过来了,下面的数据表中的是完整。

因为代码中现在还有点问题,开多线程处理的,不稳定,之后了再贴,也不能误人。

数据表,好吧,写到这儿的时候,看到csdn的编辑器里面不能上传文件。

已把文件上传到csdn了,还不知道能不能审核通过!

数据表下载地址

 

 

 

 

你可能感兴趣的:(数据库)