downdata.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/python
  2. # -*- coding=utf-8 -*-
  3. # @Create Time: 2024-01-12 13:25:10
  4. # @Last Modified time: 2024-02-02 13:32:43
  5. import pymysql
  6. import pandas as pd
  7. class MYDATABASE:
  8. def __init__(self, db_name=None):
  9. '''连接数据库,创建游标'''
  10. config = dict(zip(['host', 'user', 'port', 'password'],
  11. ['192.168.1.202', 'root', 13388, 'zh123456']))
  12. config.update(database=db_name)
  13. self.connection = pymysql.connect(**config)
  14. self.cursor = self.connection.cursor()
  15. def __del__(self):
  16. self.connection.close()
  17. def create_database(self, db_name: str):
  18. '''新建数据库'''
  19. sql = f'CREATE DATABASE IF NOT EXISTS {db_name};'
  20. self.cursor.execute(sql)
  21. def create_table(self, tbl_name: str):
  22. '''新建数据库'''
  23. sql = f'CREATE TABLE IF NOT EXISTS {tbl_name};'
  24. self.cursor.execute(sql)
  25. def drop_database(self, db_name: str):
  26. '''删除数据库'''
  27. sql = f'DROP DATABASE IF EXISTS {db_name};'
  28. self.cursor.execute(sql)
  29. def drop_table(self, tbl_name: str):
  30. '''删除数据库'''
  31. sql = f'DROP TABLE IF EXISTS {tbl_name};'
  32. self.cursor.execute(sql)
  33. def query(self, sql: str):
  34. '''以数据框形式返回查询据结果'''
  35. self.cursor.execute(sql)
  36. data = self.cursor.fetchall() # 以元组形式返回查询数据
  37. header = [t[0] for t in self.cursor.description]
  38. df = pd.DataFrame(list(data), columns=header) # pd.DataFrame 对列表具有更好的兼容性
  39. return df
  40. def show_databases(self):
  41. '''查看服务器上的所有数据库'''
  42. sql = 'SHOW DATABASE;'
  43. return self.query(sql)
  44. def select_database(self):
  45. '''查看当前数据库'''
  46. sql = 'SELECT DATABASE();'
  47. return self.query(sql)
  48. def show_tables(self):
  49. '''查看当前数据库中所有的表'''
  50. sql = 'SHOW TABLES;'
  51. return self.query(sql)
  52. def insert_table(self, sql):
  53. try:
  54. # 执行sql语句
  55. cursor.execute(sql)
  56. self.connection.commit()
  57. except Exception as e:
  58. # 发生错误时回滚
  59. self.connection.rollback()
  60. # mydb = MYDATABASE(db_name="mzinfo")
  61. # df = mydb.query("SELECT * FROM recoder;")
  62. # print(df)
  63. # from sqlalchemy import create_engine
  64. # connect_info = 'mysql+pymysql://{}:{}@{}:{}?charset=utf8'
  65. # engine = create_engine(connect_info)
  66. user_list = [
  67. # 'liguiwen@mz.gd.csg.cn',
  68. # 'houhuiteng@mz.gd.csg.cn',
  69. # 'lijie1013@mz.gd.csg.cn',
  70. # 'zengjiyi@mz.gd.csg.cn',
  71. # 'fuli@mz.gd.csg.cn',
  72. # 'zengjunhao@mz.gd.csg.cn',
  73. # 'houyue@mz.gd.csg.cn',
  74. # 'longruifan@mz.gd.csg.cn',
  75. # 'wangyongqiang@mz.gd.csg.cn',
  76. # 'liuhuan0828@mz.gd.csg.cn',
  77. # 'heweiting@mz.gd.csg.cn',
  78. # 'ganwenfeng@mz.gd.csg.cn',
  79. # 'chenweichang0607@mz.gd.csg.cn',
  80. # 'caiwujiancha1@mz.gd.csg.cn',
  81. # 'wenyongxian@mz.gd.csg.cn'
  82. ]
  83. con = pymysql.connect(host='192.168.1.202', user='root', port=13388, password='zh123456', database='mzinfo', charset='utf8', use_unicode=True)
  84. for user in user_list:
  85. sql_cmd = f"SELECT record_Time, current_Url, user_Id, request_Method, event_Type, form_Data, target_Url, iframe_Url, button_Text FROM recoder WHERE user_Id = '{user}' ORDER BY record_Time LIMIT 1000;"
  86. # df = pd.read_sql(sql_cmd, con=engine, index_col="record_Time")
  87. df = pd.read_sql(sql_cmd, con)
  88. df['record_Time'] = pd.to_datetime(df['record_Time'])
  89. print(df.head)
  90. df.to_json(f"{user}_data.json", orient='records', lines=True, force_ascii=False)