runall楼-1.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # -*- codeing = utf-8 -*-
  2. # @Time : 2022/6/16 13:21
  3. # @Author : Clown
  4. # @File : 批量执行每日数据获取脚本.py
  5. # @Software : PyCharm
  6. import os
  7. import threading
  8. import time
  9. import json
  10. import pymysql
  11. def linkTomySql(host, passwd, db_name, port):
  12. '''连接至数据库返回【db】,v2新增local_infile=1 打开文件导入权限'''
  13. try:
  14. # 本地连接为:localhost 服务器连接为:124.222.188.59
  15. db = pymysql.connect (
  16. host=host, user="root",
  17. passwd=passwd,
  18. db=db_name,
  19. charset='utf8mb4',
  20. local_infile=1,
  21. port=port)
  22. # print ('\nconnect to mysql server 成功')
  23. # print ('---------------------------------------')
  24. except:
  25. print ("\ncould not connect to mysql server")
  26. db = "连接失败"
  27. return db
  28. def read_key_value_pair(db, brand_name, wm_plate, owner):
  29. '''按条件读取,数据库中all_key_table表里的key_value_pair字段中的值,以键值对的形式输出
  30. db:数据库,
  31. brand_name:品牌名,
  32. wm_plate:外卖平台MEITUAN或ELEME,
  33. owner:账号权限all或one
  34. '''
  35. cursor = db.cursor ()
  36. sql = f'SELECT key_value_pair FROM all_key_table WHERE brand_name = "{brand_name}" AND wm_plate = "{wm_plate}" AND owner = "{owner}";'
  37. cursor.execute (sql)
  38. pair = json.loads (cursor.fetchall ()[0][0])
  39. return pair
  40. def get_shops_info_to_list(db, brand_name, wm_plate, key_name):
  41. '''获取门店信息表【shops_info_to_list】中的信息,
  42. 并返回表单shops_info_df【shop_id,shop_name,update_datetime,info_for_script】
  43. db:数据库信息
  44. brand_name:品牌
  45. wm_plate:外卖平台
  46. key_name:关键信息字段名,如无填‘’,如有填对应键值对的key
  47. '''
  48. cursor = db.cursor ()
  49. if key_name == '':
  50. sql = f'SELECT shop_id,shop_name,update_datetime FROM shops_info_for_script WHERE brand_name = "{brand_name}" AND wm_plate = "{wm_plate}";'
  51. cursor.execute (sql)
  52. shops_info = cursor.fetchall ()
  53. shops_info_df = []
  54. for shop_info in shops_info:
  55. shop_info_dict = {'shop_id': shop_info[0],
  56. 'shop_name': shop_info[1]}
  57. shops_info_df.append (shop_info_dict)
  58. return shops_info_df
  59. else:
  60. sql = f'SELECT shop_id,shop_name,update_datetime,info_for_script -> "$.{key_name}" FROM shops_info_for_script WHERE brand_name = "{brand_name}" AND wm_plate = "{wm_plate}";'
  61. cursor.execute (sql)
  62. shops_info = cursor.fetchall ()
  63. shops_info_df = []
  64. for shop_info in shops_info:
  65. shop_info_dict = {'shop_id': shop_info[0],
  66. 'shop_name': shop_info[1],
  67. 'update_datetime': shop_info[2],
  68. f'{key_name}': shop_info[3]}
  69. shops_info_df.append (shop_info_dict)
  70. return shops_info_df
  71. if __name__ == '__main__':
  72. start_time = time.time()
  73. host = '124.222.188.59'
  74. passwd = '111...Clown'
  75. db_name = 'zuzu_data'
  76. port = 63306
  77. db = linkTomySql(host, passwd, db_name, port)
  78. brand_name = '楼兰说'
  79. owner = 'all'
  80. keys_dict = {'elm':'',
  81. 'elm_shops':'',
  82. 'mt':'',
  83. 'mt_shops':''}
  84. keys_dict['elm'] = read_key_value_pair(db, brand_name, 'ELEME', owner)
  85. keys_dict['elm_shops'] = get_shops_info_to_list(db,brand_name,'ELEME','')
  86. keys_dict['mt'] = read_key_value_pair (db, brand_name, 'MEITUAN', owner)
  87. keys_dict['mt_shops'] = get_shops_info_to_list (db, brand_name, 'MEITUAN', '')
  88. keys_dict = json.dumps(keys_dict,ensure_ascii=False)
  89. s = '美团(分时流量转化数据-楼兰).py'
  90. comd = 'python '+ s + ' ' + f'"{keys_dict}"'
  91. os.system ('"%s"'%(comd))