mysql_utils.py 2.2 KB

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