_tmp_sd7_query_roles.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env python3
  2. import re
  3. from pathlib import Path
  4. import pymysql
  5. raw = Path(__file__).resolve().parents[4].joinpath(
  6. "server/Admin.NET.Application/Configuration/Database.json"
  7. ).read_text(encoding="utf-8-sig")
  8. value = next(
  9. item
  10. for item in re.findall(r'(?m)^\s*"ConnectionString"\s*:\s*"([^"]+)"', raw)
  11. if "Database=aidopdev" in item
  12. )
  13. parts = {
  14. item.split("=", 1)[0].strip().lower(): item.split("=", 1)[1].strip()
  15. for item in value.split(";")
  16. if "=" in item
  17. }
  18. conn = pymysql.connect(
  19. host=parts["server"],
  20. port=int(parts["port"]),
  21. user=parts["uid"],
  22. password=parts["pwd"],
  23. database=parts["database"],
  24. charset="utf8mb4",
  25. cursorclass=pymysql.cursors.DictCursor,
  26. )
  27. cur = conn.cursor()
  28. cur.execute(
  29. """
  30. SELECT CAST(r.Id AS CHAR) role_id, r.Code, r.Status role_status,
  31. CAST(r.TenantId AS CHAR) tenant_id, r.Name
  32. FROM SysRole r
  33. WHERE r.Code LIKE 'SMART_OPS%'
  34. AND r.TenantId IN (838257186181189,838257212780613,838257237606469)
  35. ORDER BY r.TenantId, r.Code, r.Id
  36. """
  37. )
  38. print("ROLES")
  39. for row in cur.fetchall():
  40. print(row)
  41. cur.execute(
  42. """
  43. SELECT CAST(r.Id AS CHAR) role_id, r.Code, CAST(ur.UserId AS CHAR) user_id,
  44. u.Account, u.Status user_status, CAST(u.TenantId AS CHAR) user_tenant
  45. FROM SysRole r
  46. LEFT JOIN SysUserRole ur ON ur.RoleId=r.Id
  47. LEFT JOIN SysUser u ON u.Id=ur.UserId
  48. WHERE r.Code='SMART_OPS_DEPT_HEAD' AND r.TenantId=838257186181189
  49. """
  50. )
  51. print("A DEPT HEAD BINDINGS")
  52. for row in cur.fetchall():
  53. print(row)
  54. cur.execute("SHOW COLUMNS FROM SysUserRole")
  55. print("USERROLE COLS", [x["Field"] for x in cur.fetchall()])
  56. conn.close()