import json import pymysql txt_file_path = r"E:\yuxin\us-base-baidu.txt" def get_deg_dec(deg_str): deg_num = deg_str[:-1] dir_str = deg_str[-1:] sign = (-1, 1)[dir_str in ['N', 'E']] i_degree = deg_num.find("°") i_minute = deg_num.find("'") i_second = deg_num.find('"') degree = float(deg_num[:i_degree]) minute = float(deg_num[i_degree + 1:i_minute]) second = float(deg_num[i_minute + 1:i_second]) deg_dec_num = (degree + minute / 60 + second / 3600) * sign return deg_dec_num if __name__ == "__main__": txt_file = open(txt_file_path, 'r', encoding='utf-8') txt_file_content = txt_file.read() txt_file.close() db = pymysql.connect(host='39.101.194.63', port=23306, user='root', passwd='passok123A', db='nfm', charset='utf8mb4') cursor = db.cursor() count = 0 for txt_line in txt_file_content.split('\n'): count += 1 line_tuple = txt_line.split() cn_name = line_tuple[0] lat_str = line_tuple[1] lon_str = line_tuple[2] lat = get_deg_dec(lat_str) lon = get_deg_dec(lon_str) item = { 'id': count, 'cn_name': cn_name, 'lat_str': lat_str, 'lon_str': lon_str, 'lat': lat, 'lon': lon } cols = [] vals = [] for k in item: v = item[k] cols.append(k) if type(v) == str: vals.append("'{}'".format(v.replace("'", "\\'"))) else: vals.append("{}".format(v)) SQL_INSERT = "INSERT INTO nfm.us_base_bd_info ({}) VALUES ({})".format(", ".join(cols), ", ".join(vals)) print("[No. {}]".format(count)) cursor.execute(SQL_INSERT) db.commit() db.close()