mysql_utils.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2022/2/22 11:44
  3. # @Author : XuJiakai
  4. # @File : mysql_utils
  5. # @Software: PyCharm
  6. import pymysql
  7. import psycopg2
  8. from psycopg2 import extras
  9. def exec_sql(db_client, sql):
  10. with db_client.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
  11. cursor.execute(sql)
  12. result = cursor.fetchall()
  13. return result
  14. pass
  15. def exec_sql_by_holo(db_client, sql):
  16. with db_client.cursor(cursor_factory=psycopg2.extras.DictCursor) as cursor:
  17. cursor.execute(sql)
  18. result = cursor.fetchall()
  19. return result
  20. pass
  21. def get_mysql_fields(db_client, table_schema, table_name):
  22. with db_client.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
  23. cursor.execute(
  24. f"select column_name, column_comment from information_schema.columns where table_schema ='{table_schema}' and table_name = '{table_name}'")
  25. result = cursor.fetchall()
  26. return result
  27. def get_mysql_tables(db_client, table_schema):
  28. with db_client.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
  29. cursor.execute(
  30. f"select table_name , table_comment from information_schema.tables where table_schema ='{table_schema}' ")
  31. result = cursor.fetchall()
  32. return result
  33. def insert(json: map, table_name, db_client):
  34. keys = list(json.keys())
  35. return insert_many([json], keys, table_name, db_client)
  36. pass
  37. def insert_many(data: list, key_list: list, table_name, db_client):
  38. keys = ','.join(key_list)
  39. vs = ','.join(['%s'] * len(key_list))
  40. data = tuple([tuple(i.values()) for i in data])
  41. sql = f"INSERT INTO {table_name}({keys}) \nvalues({vs}) "
  42. # print(sql)
  43. with db_client.cursor() as cursor:
  44. try:
  45. num = cursor.executemany(sql, data)
  46. db_client.commit()
  47. return num
  48. except Exception as e:
  49. print(e)
  50. db_client.rollback()
  51. return -1
  52. pass
  53. if __name__ == '__main__':
  54. from sdk.WinhcAllClient import get_all_client
  55. all_client = get_all_client()
  56. holo_client = all_client.get_holo_client(db='winhc_biz')
  57. HOLO_TABLE_NAME = 'public.ads_waa_dim_info'
  58. pass