amp_mask_db_writer.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import datetime
  2. import time
  3. import pandas as pd
  4. # import numpy as np
  5. import pymongo
  6. from config_info.config import DB_URL
  7. # from file_reader.db_file_reader import DbFileReader
  8. db_client = pymongo.MongoClient(DB_URL)
  9. prisma_db = db_client["prisma-32_db"]
  10. def amp_mask_db_writer(cluster, start_date, end_date, path_to_mask):
  11. """Запись из excel файла данных амплитудной маски в БД, за указанный промежуток времени."""
  12. # Кажется нужно указать только год и месяц, который мы хотим записать в БД из excel.
  13. mask_amp = pd.read_excel(f'{path_to_mask}\\{cluster}cl_amp_mask_{start_date.year}.xlsx',
  14. sheet_name=f'{start_date.year}-{start_date.month:02}')
  15. for i in mask_amp.index:
  16. daily_mask_data = mask_amp[[f"amp{i}_mask" for i in range(1, 17)]].iloc[0, :].tolist()
  17. collection_prisma = prisma_db[f'{str(mask_amp["date"][i].date())}_12d']
  18. upd_result = collection_prisma.update_many({'cluster': cluster},
  19. {"$set": {
  20. f'mask_of_hit_counters_amp': int(
  21. ''.join(map(lambda x: str(x), daily_mask_data)), 2),
  22. f'multiplicity_of_hit_counters_amp': sum(daily_mask_data)}})
  23. print(f'Matched documents amp_mask_{cluster} - {upd_result.matched_count}')
  24. print(f'Modified documents amp_mask_{cluster} - {upd_result.modified_count}')
  25. if __name__ == "__main__":
  26. t1 = time.time_ns()
  27. amp_mask_db_writer(cluster=1, start_date=datetime.date(2021, 1, 1), end_date=datetime.date(2021, 1, 31),
  28. path_to_mask="C:\\Users\\pad_z\\OneDrive\\Рабочий стол\\PrismaPassport\\amp_mask")
  29. print(f'time - {(time.time_ns() - t1) / 1e9}')