Pdd_add_province.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. import os
  2. def get_mysql():
  3. """
  4. 建立并返回一个到数据库的连接对象
  5. """
  6. import pymysql
  7. # return pymysql.connect(
  8. # host='localhost', # 修改后的主机
  9. # port=3306, # 添加端口号
  10. # user='root', # 修改后的用户名
  11. # password='dfwy2025', # 修改后的密码
  12. # db='drug_data', # 修改后的数据库名
  13. # charset='utf8mb4'
  14. # )
  15. return pymysql.connect(
  16. host='47.119.164.65', # 修改后的主机
  17. port=3306, # 添加端口号
  18. user='test_c', # 修改后的用户名
  19. password='Dfwy@2025', # 修改后的密码
  20. db='test2', # 修改后的数据库名
  21. charset='utf8mb4'
  22. )
  23. def main():
  24. # 连接数据库
  25. conn = get_mysql()
  26. # 创建游标对象
  27. cur = conn.cursor()
  28. query = f"""
  29. SELECT id, business_license_address
  30. FROM pdd_shop_info_middle
  31. WHERE province = '' AND business_license_address != ''
  32. """
  33. cur.execute(query)
  34. results = cur.fetchall()
  35. print(f"results={results}")
  36. # 逐条处理每条数据
  37. for row in results:
  38. addr_id = row[0]
  39. address = row[1]
  40. print(f"address={address}")
  41. # address = '湖南省长沙市岳麓区西湖街道金星中路398号玛依拉山庄6栋113号'
  42. if '北京市' in address:
  43. province = '北京'
  44. city = '北京'
  45. elif '天津市' in address:
  46. province = '天津'
  47. city = '天津'
  48. elif '上海市' in address:
  49. province = '上海'
  50. city = '上海'
  51. elif '重庆市' in address:
  52. province = '重庆'
  53. city = '重庆'
  54. else :
  55. if '省' in address:
  56. province, _, rest_address = address.partition('省')
  57. #print('province ->', province)
  58. # print('rest_address ->', rest_address)
  59. if '市' in rest_address:
  60. city, _, rest_rest_address = rest_address.partition('市')
  61. # print('rest_rest_address ->', rest_rest_address)
  62. else:
  63. city = ''
  64. elif "县" in address:
  65. # 1. 提取出县的名字,比如 "海丰"
  66. county, _, _ = address.partition('县')
  67. # 2. 针对特殊的县进行处理
  68. if '海丰' in county:
  69. province = '广东'
  70. city = '汕尾'
  71. elif '灵川' in county:
  72. province = '广西'
  73. city = '桂林'
  74. elif '丰顺' in county:
  75. province='广东'
  76. city = '梅州'
  77. else:
  78. # 如果是其他不认识的县,先记录名字,省份设为空
  79. province = ''
  80. city = county
  81. elif address.startswith('许昌'):
  82. province = '河南'
  83. city = '许昌'
  84. elif '新区' in address:
  85. # 1. 提取新区前的名字
  86. area, _, _ = address.partition('新区')
  87. # 2. 针对性判断
  88. if '西咸' in area:
  89. province = '陕西'
  90. city = '西安'
  91. elif '自由贸易试验区' in address:
  92. # 1. 提取括号里的省份名 (例如从 "中国(辽宁)" 中提取 "辽宁")
  93. if '(' in address and ')' in address:
  94. _, _, temp = address.partition("(")
  95. province, _, _ = temp.partition(")")
  96. else:
  97. province = ''
  98. #中国(辽宁)自由贸易试验区营口片区青花大街西107号,即科技城孵化器二期26号楼301房41号工位
  99. if '片区' in address:
  100. _, _, part_after_test = address.partition('试验区')
  101. city, _, _ = part_after_test.partition("片区")
  102. else:
  103. city = ''
  104. if city == '营口片区': # 防止切得不干净
  105. city = '营口'
  106. else:
  107. province = ''
  108. if '市' in address:
  109. city, _, rest_address = address.partition('市')
  110. #print('city ->', city)
  111. # print('rest_address ->', rest_address)
  112. if (city == '深圳' or city == '广州' or city == '普宁' or city == '中山' or
  113. city == '惠州' or city == '茂名' or city == '韶关' or city == '佛山' or
  114. city == '汕头' or city == '东莞' or city == '揭阳' or city == '化州' or
  115. city == '清远' or city == '河源' or city == '湛江' or city == '英德' or
  116. city == '兴宁' or city == '开平' or city == '珠海' or city == '潮州' or
  117. city == '四会' or city == '肇庆' or city == '阳春' or city == '阳江' or
  118. city == '梅州' or city == '台山' or city == '江门' or city == '陆丰' or
  119. city == '汕尾' or city == '高州' or city == '雷州' or city == '南雄'):
  120. province = '广东'
  121. elif (city == '合肥' or city == '淮南' or city == '天长' or city == '滁州' or
  122. city == '芜湖' or city == '蚌埠' or city == '马鞍山' or city == '淮北' or
  123. city == '铜陵' or city == '安庆' or city == '黄山' or city == '阜阳' or
  124. city == '宿州' or city == '六安' or city == '亳州' or city == '池州' or
  125. city == '宣城' or city == '广德' or city == '桐城' or city == '界首'):
  126. province = '安徽'
  127. elif (city == '成都' or city == '阆中' or city == '内江' or city == '彭州' or
  128. city == '南充' or city == '自贡' or city == '攀枝花' or city == '泸州' or
  129. city == '德阳' or city == '绵阳' or city == '广元' or city == '遂宁' or
  130. city == '乐山' or city == '眉山' or city == '宜宾' or city == '广安' or
  131. city == '达州' or city == '雅安' or city == '巴中' or city == '资阳' or
  132. city == '江油'):
  133. province = '四川'
  134. elif (city == '盖州' or city == '营口' or city == '沈阳' or city == '大连' or
  135. city == '鞍山' or city == '抚顺' or city == '本溪' or city == '丹东' or
  136. city == '锦州' or city == '阜新' or city == '辽阳' or city == '盘锦' or
  137. city == '铁岭' or city == '朝阳' or city == '葫芦岛' or city == '海城' or
  138. city == '灯塔'):
  139. province = '辽宁'
  140. elif (city == '南京' or city == '无锡' or city == '苏州' or city == '徐州' or
  141. city == '宿迁' or city == '淮安' or city == '泰州' or city == '扬州' or
  142. city == '盐城' or city == '连云港' or city == '丹阳' or city == '镇江' or
  143. city == '东台' or city == '江阴' or city == '靖江' or city == '昆山' or
  144. city == '启东' or city == '南通' or city == '扬中' or city == '宜兴' or
  145. city == '张家港' or city == '常州' or city == '兴化' or city== '太仓' or
  146. city == '泰兴' or city == '新沂' or city == '海安' or city == '溧阳' or
  147. city == '邳州' or city == '常熟'):
  148. province = '江苏'
  149. elif (city == '济南' or city == '滕州' or city == '枣庄' or city == '青岛' or
  150. city == '淄博' or city == '东营' or city == '烟台' or city == '潍坊' or
  151. city == '济宁' or city == '泰安' or city == '威海' or city == '日照' or
  152. city == '临沂' or city == '德州' or city == '聊城' or city == '滨州' or
  153. city == '菏泽' or city == '曲阜'):
  154. province = '山东'
  155. elif (city == '杭州' or city == '宁波' or city == '温州' or city == '嘉兴' or
  156. city == '湖州' or city == '绍兴' or city == '金华' or city == '衢州' or
  157. city == '舟山' or city == '台州' or city == '丽水' or city == '义乌' or
  158. city == '桐乡' or city == '余姚' or city == '慈溪'):
  159. province = '浙江'
  160. elif (city == '长沙' or city == '衡阳' or city == '吉首' or city == '株洲' or
  161. city == '湘潭' or city == '邵阳' or city == '岳阳' or city == '常德' or
  162. city == '张家界' or city == '益阳' or city == '郴州' or city == '永州' or
  163. city == '怀化' or city == '娄底' or city == '冷水江'):
  164. province = '湖南'
  165. elif (city == '厦门' or city == '福州' or city == '晋江' or city == '泉州' or
  166. city == '永安' or city == '三明' or city == '石狮' or city == '福安' or
  167. city == '宁德' or city == '莆田' or city == '漳州' or city == '南平' or
  168. city == '龙岩' or city == '福清' or city == '建瓯' or city == '南安'):
  169. province = '福建'
  170. elif (city == '郑州' or city == '禹州' or city == '南阳' or city == '永城' or
  171. city == '洛阳' or city == '焦作' or city == '济源' or city == '汝州' or
  172. city == '平顶山' or city == '商丘' or city == '新密' or city == '禹州' or
  173. city == '许昌' or city == '开封' or city == '安阳' or city == '鹤壁' or
  174. city == '新乡' or city == '濮阳' or city == '漯河' or city == '三门峡' or
  175. city == '周口' or city == '驻马店' or city == '卫辉' or city == '灵宝' or
  176. city == '辉县' or city == '项城' or city == '林州' or city == '荥阳' or
  177. city == '巩义'):
  178. province = '河南'
  179. elif (city == '石家庄' or city == '唐山' or city == '秦皇岛' or city == '邯郸' or
  180. city == '廊坊' or city == '邢台' or city == '保定' or city == '张家口' or
  181. city == '承德' or city == '沧州' or city == '衡水' or city == '南宫' or
  182. city == '新乐' or city == '河间' or city == '辛集' or city == '迁安' or
  183. city == '定州'):
  184. province = '河北'
  185. elif (city == '太原' or city == '长治' or city == '大同' or city == '阳泉' or
  186. city == '晋城' or city == '朔州' or city == '晋中' or city == '运城' or
  187. city == '忻州' or city == '临汾' or city == '吕梁' or city == '汾阳' or
  188. city == '介休'):
  189. province = '山西'
  190. elif (city == '呼和浩特' or city == '包头' or city == '乌海' or city == '赤峰' or
  191. city == '通辽' or city == '鄂尔多斯' or city == '呼伦贝尔' or city == '巴彦淖尔' or
  192. city == '乌兰察布'):
  193. province = '内蒙古'
  194. elif (city == '武汉' or city == '潜江' or city == '当阳' or city == '大冶' or
  195. city == '黄石' or city == '当阳' or city == '宜昌' or city == '汉川' or
  196. city == '孝感' or city == '十堰' or city == '襄阳' or city == '鄂州' or
  197. city == '荆门' or city == '荆州' or city == '黄冈' or city == '咸宁' or
  198. city == '随州' or city == '恩施' or city == '利川' or city == '仙桃' or
  199. city == '枣阳' or city == '潜江' or city == '应城'):
  200. province = '湖北'
  201. elif (city == '西安' or city == '铜川' or city == '宝鸡' or city == '咸阳' or
  202. city == '渭南' or city == '延安' or city == '汉中' or city == '榆林' or
  203. city == '安康' or city == '商洛'):
  204. province = '陕西'
  205. elif (city == '南昌' or city == '景德镇' or city == '萍乡' or city == '九江' or
  206. city == '新余' or city == '鹰潭' or city == '赣州' or city == '吉安' or
  207. city == '宜春' or city == '抚州' or city == '上饶' or city == '樟树' or
  208. city == '瑞金'):
  209. province = '江西'
  210. elif (city == '哈尔滨' or city == '齐齐哈尔' or city == '鸡西' or city == '鹤岗' or
  211. city == '双鸭山' or city == '大庆' or city == '伊春' or city == '佳木斯' or
  212. city == '七台河' or city == '牡丹江' or city == '黑河' or city == '绥化' or
  213. city == '海林'):
  214. province = '黑龙江'
  215. elif (city == '长春' or city == '梅河口' or city == '通化' or city == '图们' or
  216. city == '吉林' or city == '四平' or city == '辽源' or city == '白山' or
  217. city == '松原' or city == '白城' or city == '延吉'):
  218. province = '吉林'
  219. elif (city == '弥勒' or city == '昆明' or city == '曲靖' or city == '玉溪' or
  220. city == '保山' or city == '昭通' or city == '丽江' or city == '普洱' or
  221. city == '临沧' or city == '大理' or city == '楚雄'):
  222. province = '云南'
  223. elif (city == '贵阳' or city == '六盘水' or city == '遵义' or city == '安顺' or
  224. city == '毕节' or city == '铜仁'):
  225. province = '贵州'
  226. elif (city == '乌鲁木齐' or city == '克拉玛依' or city == '吐鲁番' or city == '哈密'):
  227. province = '新疆'
  228. elif (city == '兰州' or city == '嘉峪关' or city == '金昌' or city == '白银' or
  229. city == '天水' or city == '武威' or city == '张掖' or city == '平凉' or
  230. city == '酒泉' or city == '庆阳' or city == '定西' or city == '陇南'):
  231. province = '甘肃'
  232. elif city == '西宁' or city == '海东':
  233. province = '青海'
  234. elif (city == '银川' or city == '石嘴山' or city == '吴忠' or city == '固原' or city == '中卫'):
  235. province = '宁夏'
  236. elif (city == '南宁' or city == '玉林' or city == '柳州' or city == '防城港' or
  237. city == '桂平' or city == '贵港' or city == '桂林' or city == '梧州' or
  238. city == '北海' or city == '钦州' or city == '百色' or city == '贺州' or
  239. city == '河池' or city == '来宾' or city == '崇左' or city == '岑溪' or
  240. city == '北流'):
  241. province = '广西'
  242. else :
  243. city = ''
  244. #对部分县级市或代管市进行城市值的变更:
  245. if province == '广东' and city == '普宁':
  246. city = '揭阳'
  247. elif province == '福建' and city == '晋江':
  248. city = '泉州'
  249. elif province == '福建' and city == '永安':
  250. city = '三明'
  251. elif province == '广东' and city == '四会':
  252. city = '肇庆'
  253. elif province == '广东' and city == '英德':
  254. city = '清远'
  255. elif province == '广西' and city == '桂平':
  256. city = '贵港'
  257. elif province == '河南' and city == '济源':
  258. city = '河南省直辖县'
  259. elif province == '河南' and city == '汝州':
  260. city = '平顶山'
  261. elif province == '河南' and city == '永城':
  262. city = '商丘'
  263. elif province == '湖北' and city == '大冶':
  264. city = '黄石'
  265. elif province == '湖北' and city == '当阳':
  266. city = '宜昌'
  267. elif province == '湖北' and city == '汉川':
  268. city = '孝感'
  269. elif province == '吉林' and city == '梅河口':
  270. city = '通化'
  271. elif province == '江苏' and city == '丹阳':
  272. city = '镇江'
  273. elif province == '江苏' and city == '东台':
  274. city = '盐城'
  275. elif province == '江苏' and city == '江阴':
  276. city = '无锡'
  277. elif province == '江苏' and city == '靖江':
  278. city = '泰州'
  279. elif province == '江苏' and city == '昆山':
  280. city = '苏州'
  281. elif province == '江苏' and city == '启东':
  282. city = '南通'
  283. elif province == '江苏' and city == '扬中':
  284. city = '镇江'
  285. elif province == '江苏' and city == '宜兴':
  286. city = '无锡'
  287. elif province == '江苏' and city == '张家港':
  288. city = '苏州'
  289. elif province == '辽宁' and city == '盖州':
  290. city = '营口'
  291. elif province == '山东' and city == '滕州':
  292. city = '枣庄'
  293. elif province == '云南' and city == '弥勒':
  294. city = '红河哈尼族彝族自治州'
  295. elif province == '河南' and city == '新密':
  296. city = '郑州'
  297. elif province == '河南' and city == '禹州':
  298. city = '许昌'
  299. elif province == '广东' and city == '化州':
  300. city = '茂名'
  301. elif province == '福建' and city == '石狮':
  302. city = '泉州'
  303. elif province == '湖南' and city == '吉首':
  304. city = '湘西土家族苗族自治州'
  305. elif province == '福建' and city == '福安':
  306. city = '宁德'
  307. elif province == '广东' and city == '阳春':
  308. city = '阳江'
  309. elif province == '吉林' and city == '图们':
  310. city = '延边朝鲜族自治州'
  311. elif province == '广东' and city == '兴宁':
  312. city = '梅州'
  313. elif province == '广东' and city == '台山':
  314. city = '江门'
  315. elif province == '广东' and city == '开平':
  316. city = '江门'
  317. elif province == '广东' and city == '陆丰':
  318. city = '汕尾'
  319. elif province == '广东' and city == '高州':
  320. city = '茂名'
  321. elif province == '安徽' and city == '天长':
  322. city = '滁州'
  323. elif province == '安徽' and city == '广德':
  324. city = '宣城'
  325. elif province == '安徽' and city == '桐城':
  326. city = '安庆'
  327. elif province == '安徽' and city == '界首':
  328. city = '阜阳'
  329. elif province == '四川' and city == '彭州':
  330. city = '成都'
  331. elif province == '四川' and city == '阆中':
  332. city = '南充'
  333. elif province == '辽宁' and city == '海城':
  334. city = '鞍山'
  335. elif province == '辽宁' and city == '灯塔':
  336. city = '辽阳'
  337. elif province == '江苏' and city == '兴化':
  338. city = '泰州'
  339. elif province == '江苏' and city == '太仓':
  340. city = '苏州'
  341. elif province == '江苏' and city == '泰兴':
  342. city = '泰州'
  343. elif province == '江苏' and city == '新沂':
  344. city = '徐州'
  345. elif province == '江苏' and city == '海安':
  346. city = '南通'
  347. elif province == '江苏' and city == '溧阳':
  348. city = '常州'
  349. elif province == '江苏' and city == '邳州':
  350. city = '徐州'
  351. elif province == '浙江' and city == '义乌':
  352. city = '金华'
  353. elif province == '浙江' and city == '桐乡':
  354. city = '嘉兴'
  355. elif province == '浙江' and city == '余姚':
  356. city = '宁波'
  357. elif province == '河南' and city == '卫辉':
  358. city = '新乡'
  359. elif province == '河南' and city == '灵宝':
  360. city = '三门峡'
  361. elif province == '河南' and city == '辉县':
  362. city = '新乡'
  363. elif province == '河南' and city == '项城':
  364. city = '周口'
  365. elif province == '河南' and city == '林州':
  366. city = '安阳'
  367. elif province == '河北' and city == '南宫':
  368. city = '邢台'
  369. elif province == '河北' and city == '新乐':
  370. city = '石家庄'
  371. elif province == '河北' and city == '河间':
  372. city = '沧州'
  373. elif province == '河北' and city == '辛集':
  374. city = '石家庄'
  375. elif province == '河北' and city == '迁安':
  376. city = '唐山'
  377. elif province == '山西' and city == '汾阳':
  378. city = '吕梁'
  379. elif province == '湖北' and city == '恩施':
  380. city = '恩施土家族苗族自治州'
  381. elif province == '湖北' and city == '利川':
  382. city = '恩施土家族苗族自治州'
  383. elif province == '湖北' and city == '仙桃':
  384. city = '湖北省直辖县'
  385. elif province == '湖北' and city == '大治':
  386. city = '黄石'
  387. elif province == '湖北' and city == '枣阳':
  388. city = '襄阳'
  389. elif province == '湖北' and city == '潜江':
  390. city = '湖北省直辖县'
  391. elif province == '江西' and city == '樟树':
  392. city = '宜春'
  393. elif province == '江西' and city == '瑞金':
  394. city = '赣州'
  395. elif province == '吉林' and city == '延吉':
  396. city = '延边朝鲜族自治州'
  397. elif province == '云南' and city == '大理':
  398. city = '大理白族自治州'
  399. elif province == '云南' and city == '楚雄':
  400. city = '楚雄彝族自治州'
  401. elif province == '湖南' and city == '冷水江':
  402. city = '娄底'
  403. elif province == '河南' and city == '荥阳':
  404. city = '郑州'
  405. elif province == '广东' and city == '雷州':
  406. city = '湛江'
  407. elif province == '湖北' and city == '应城':
  408. city = '孝感'
  409. elif province == '山东' and city == '曲阜':
  410. city = '济宁'
  411. elif province == '广西' and city == '岑溪':
  412. city = '梧州'
  413. elif province == '山西' and city == '介休':
  414. city = '晋中'
  415. elif province == '广西' and city == '北流':
  416. city = '玉林'
  417. elif province == '河南' and city == '巩义':
  418. city = '郑州'
  419. elif province == '福建' and city == '福清':
  420. city = '福州'
  421. elif province == '广东' and city == '南雄':
  422. city = '韶关'
  423. elif province == '黑龙江' and city == '海林':
  424. city = '牡丹江'
  425. elif province == '河北' and city == '定州':
  426. city = '保定'
  427. elif province == '浙江' and city == '慈溪':
  428. city = '宁波'
  429. elif province == '福建' and city == '建瓯':
  430. city = '南平'
  431. elif province == '福建' and city == '南安':
  432. city = '泉州'
  433. elif province == '江苏' and city == '常熟':
  434. city = '苏州'
  435. elif province == '四川' and city == '江油':
  436. city = '绵阳'
  437. #将省市的值写入到数据表中
  438. update_sql = """
  439. UPDATE pdd_shop_info_middle
  440. SET province = %s,
  441. city = %s
  442. WHERE id = %s
  443. """
  444. cur.execute(update_sql, (province, city, addr_id))
  445. conn.commit()
  446. if __name__ == '__main__':
  447. main()