generate_minute_sql_sigle_sql.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import datetime
  2. import pandas as pd
  3. from sqlalchemy import create_engine
  4. def get_engine():
  5. username = 'envision'
  6. password = 'envision'
  7. host = '172.21.6.37'
  8. port = 3306
  9. dbname = 'envision'
  10. return create_engine(f'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}')
  11. def generate_sql(df: pd.DataFrame, wind_name: str):
  12. print(f"开始执行{wind_name}")
  13. wind_nos = df['风机号'].unique()
  14. all_sqls = list()
  15. begin_time_str = '2025-01-01 00:00:00'
  16. end_time_str = '2025-03-01 00:00:00'
  17. for wind_no in wind_nos:
  18. wind_df = df[df['风机号'] == wind_no]
  19. for wind_factory, table, col, en_name in zip(wind_df['风场'], wind_df['历史采样表名'], wind_df['历史采样域名'],
  20. wind_df['en_name']):
  21. all_sqls.append((wind_factory,
  22. f"select '{wind_factory}' as wind_factory,{wind_no} as wind_no, occur_time, {col} as {en_name}"
  23. f" from {table} where occur_time >= '{begin_time_str}' and occur_time <'{end_time_str}'"))
  24. return all_sqls
  25. def show_sqls(datas):
  26. for index, data in enumerate(datas):
  27. print('--', data[0])
  28. print(data[1])
  29. print()
  30. def save_to_csv(datas):
  31. dfs = list()
  32. for index, data in enumerate(datas):
  33. begin = datetime.datetime.now()
  34. print('开始', begin)
  35. dfs.append(pd.read_sql(data[1], get_engine()))
  36. df.to_csv(data[0] + str(index) + ".csv", encoding='utf8', index=False)
  37. print('结束', datetime.datetime.now(), '耗时:', datetime.datetime.now() - begin)
  38. if __name__ == '__main__':
  39. df = pd.read_csv(r"C:\Users\wzl\Desktop\中广核104测点\min_tables.csv")
  40. datas = generate_sql(df[df['风场'] == '右玉'], '右玉')
  41. show_sqls(datas)