change_device_info.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QFileDialog, QMessageBox
  3. import pandas as pd
  4. import pymongo
  5. class FilePicker(QWidget):
  6. def __init__(self):
  7. super().__init__()
  8. self.initUI()
  9. def initUI(self):
  10. self.setWindowTitle('北大荒更改设备信息')
  11. self.setGeometry(600, 600, 400, 400)
  12. layout = QVBoxLayout()
  13. # 创建一个输入框和按钮
  14. self.filepath_edit = QLineEdit(self)
  15. layout.addWidget(self.filepath_edit)
  16. self.select_button = QPushButton('选择文件', self)
  17. self.select_button.clicked.connect(self.openFileDialog)
  18. layout.addWidget(self.select_button)
  19. self.setLayout(layout)
  20. def openFileDialog(self):
  21. # 打开文件对话框
  22. options = QFileDialog.Options()
  23. options |= QFileDialog.DontUseNativeDialog
  24. filename, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "All Files (*);;Python Files (*.py)", options=options)
  25. if filename:
  26. myclient = pymongo.MongoClient("mongodb://{0}:{1}@10.5.64.238:57017/".format("root","yfkj2024"))
  27. db = myclient.smartfarming
  28. sa_device = db.sa_device
  29. self.filepath_edit.setText(filename)
  30. df = pd.read_excel(filename, sheet_name="北大荒ID记录表")
  31. df = df[["云飞ID", "北大荒ID", "农场简称"]]
  32. is_exist = 0
  33. for k in df.to_dict(orient='records'):
  34. yf_id = k["云飞ID"]
  35. bdh_id = k["北大荒ID"]
  36. farm_name = k["农场简称"]
  37. if "/" not in str(yf_id):
  38. update = sa_device.update_one(
  39. {"device_id":{"$regex": k["云飞ID"]}, "device_name": {"$eq": ""}},
  40. {"$set":{"device_name":k["农场简称"] + k["北大荒ID"]}}
  41. )
  42. print(update.modified_count)
  43. self.process_file(filename)
  44. def process_file(self, file_path):
  45. # 这里可以编写处理文件的逻辑,示例中简单打印文件路径
  46. print(f'选择的文件路径:{file_path}')
  47. # 处理完成后弹出消息框提示
  48. QMessageBox.information(self, '处理完成', '文件处理完成!')
  49. if __name__ == '__main__':
  50. app = QApplication(sys.argv)
  51. ex = FilePicker()
  52. ex.show()
  53. sys.exit(app.exec_())