DBgetdata.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from models import *
  2. import pymysql
  3. def dbgetdata(service_code, db,query_list = {}): # SessionLocal()
  4. data = []
  5. database_info = db.query(DatasourceEntity).filter(DatasourceEntity.scope == service_code).first()
  6. command_info = db.query(CommandEntity).filter(CommandEntity.scope == service_code).filter(
  7. CommandEntity.datasource == database_info.id).first()
  8. sql = command_info.sqltext
  9. # print(query_list)
  10. for key in query_list.keys():
  11. if key != 'access_token' and key != 'page' and key != 'limit' and key != 'create_time' and key != 'record_name' and key != 'record_cid':
  12. sql = sql.replace("{" + key + "}", query_list[key].replace('全部', ''))
  13. elif key == 'create_time':
  14. if query_list[key] != '全部':
  15. sql = sql.replace("{" + key + "}", (
  16. 'DATE_FORMAT(create_time,\'%Y-%m-%d\') =\'' + query_list[key] + '\' and')) # DATE_FORMAT(create_time,'%Y-%m-%d') ='{create_time}'
  17. else:
  18. sql = sql.replace("{" + key + "}", '')
  19. elif key == 'record_name' or key == 'record_cid':
  20. if query_list[key] != '全部':
  21. sql = sql.replace("{" + key + "}", (key + '=\'' + query_list[key] + '\' and'))
  22. else:
  23. sql = sql.replace("{" + key + "}", '')
  24. # elif key =='record_cid':
  25. # if val != '全部':
  26. # sql = sql.replace("{" + key + "}", ('record_name =\''+val+'\' and'))
  27. # else:
  28. # print(111)
  29. # sql = sql.replace("{" + key + "}", '')
  30. conn = pymysql.connect(host=database_info.host,
  31. user=database_info.user,
  32. password=database_info.password,
  33. database=database_info.database,
  34. port=database_info.port,
  35. charset=database_info.charset)
  36. cur = conn.cursor()
  37. cur.execute(sql)
  38. rows = cur.fetchall()
  39. # 字段名列表
  40. colnames = [desc[0] for desc in cur.description]
  41. pages = 1 # 总页数
  42. current = 1 # 第几页
  43. total = len(rows)
  44. size = len(rows)
  45. start_index = (current - 1) * size
  46. end_index = current * size
  47. if pages <= current:
  48. # current = pages
  49. if total == size:
  50. end_index = (current - 1) * size + total
  51. elif total % size == 0:
  52. end_index = current * size
  53. else:
  54. end_index = (current - 1) * size + total % size
  55. start_index = (current - 1) * size
  56. if total == 0:
  57. start_index = end_index = 0
  58. for row in range(start_index, end_index):
  59. item = {}
  60. for col in range(len(colnames)):
  61. field_name = colnames[col]
  62. item[field_name] = rows[row][col]
  63. data.append(item)
  64. conn.close()
  65. return data