OfpayDataSync.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. import pymysql
  3. import csv
  4. class OfpayDataSyncer:
  5. def __init__(self):
  6. self.db_conn = None;
  7. self.connect_mysql();
  8. def connect_mysql(self):
  9. config = {
  10. 'host':'47.106.225.136',
  11. 'port':3306,
  12. 'user':'root',
  13. 'passwd':'sjojo123456',
  14. 'database':'mitmproxy',
  15. 'charset':'utf8'
  16. };
  17. db_conn = None;
  18. while True:
  19. try:
  20. db_conn = pymysql.connect(**config);
  21. db_conn.ping(reconnect=True);
  22. except pymysql.OperationalError as e:
  23. print(e);
  24. print('连接断开,正在尝试重新连接...');
  25. if db_conn:
  26. db_conn.close();
  27. db_conn = pymysql.connect(**config);
  28. time.sleep(1);
  29. else:
  30. break;
  31. self.db_conn = db_conn;
  32. def sync(self, filename='results.csv'):
  33. sql_query = f'''
  34. SELECT * FROM elife_account_data WHERE update_time >= CURDATE() AND update_time < CURDATE() + INTERVAL 1 DAY;
  35. ''';
  36. cursor = self.db_conn.cursor();
  37. cursor.execute(sql_query);
  38. results = cursor.fetchall();
  39. with open(filename, 'w', newline='', encoding='utf-8') as f:
  40. writer = csv.writer(f);
  41. if results:
  42. headers = [i[0] for i in cursor.description];
  43. writer.writerow(headers);
  44. for row in results:
  45. writer.writerow(row);
  46. def read(self, filename='results.csv'):
  47. data_dicts = []
  48. try:
  49. with open(filename, mode='r', encoding='utf-8') as csvfile:
  50. reader = csv.DictReader(csvfile);
  51. for row in reader:
  52. data_dicts.append(row);
  53. except IOError as e:
  54. print(f"read_elife_account_data error occurred: {e}");
  55. print(data_dicts);
  56. return data_dicts;
  57. def main():
  58. syncer = OfpayDataSyncer();
  59. syncer.sync('elife_accout_data.csv');
  60. # syncer.read('elife_accout_data.csv');
  61. if __name__ == "__main__":
  62. main();