| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # -*- coding: utf-8 -*-
- """Probe existing Demo tenant/user in the shared dev DB before doing租户 A batch."""
- from __future__ import annotations
- import pymysql
- CONN = dict(
- host='123.60.180.165', port=3306,
- user='aidopremote', password='1234567890aiDOP#',
- database='aidopdev', charset='utf8mb4', autocommit=True,
- )
- def main() -> None:
- conn = pymysql.connect(**CONN)
- with conn.cursor(pymysql.cursors.DictCursor) as cur:
- print("=== SysTenant schema ===")
- cur.execute("SHOW COLUMNS FROM SysTenant")
- cols = [c['Field'] for c in cur.fetchall()]
- print(" columns:", ", ".join(cols))
- print("\n=== SysTenant 列表 ===")
- cur.execute("SELECT * FROM SysTenant ORDER BY Id")
- for row in cur.fetchall():
- cid = row.get('Id')
- name_candidates = [row.get(k) for k in ('Name', 'TenantName', 'OrgName', 'NickName') if k in row]
- nm = next((x for x in name_candidates if x), '-')
- st = row.get('Status', '?')
- tt = row.get('TenantType', '?')
- print(f" {cid!s:>15} | {nm!s:<30} | Status={st} | TenantType={tt}")
- print("\n=== 疑似 Demo 账号 (Account/RealName 含 demo/Demo/试用/演示) ===")
- cur.execute(
- """
- SELECT Id, Account, RealName, NickName, TenantId, Status
- FROM SysUser
- WHERE LOWER(Account) LIKE '%demo%' OR LOWER(NickName) LIKE '%demo%'
- OR RealName LIKE '%试用%' OR RealName LIKE '%演示%' OR RealName LIKE '%Demo%'
- ORDER BY TenantId, Id
- """
- )
- rows = cur.fetchall()
- if not rows:
- print(" (无)")
- for row in rows:
- print(f" Id={row['Id']} | Account={row['Account']} | RealName={row['RealName']} | TenantId={row['TenantId']} | Status={row['Status']}")
- print("\n=== AiDOP 核心表 TenantId 分布 ===")
- for tbl, col in [
- ('ado_smart_ops_kpi_master', 'TenantId'),
- ('ado_smart_ops_layout_item', 'TenantId'),
- ('ado_smart_ops_home_module', 'TenantId'),
- ('ado_s9_kpi_value_l1_day', 'tenant_id'),
- ('ado_s9_kpi_value_l2_day', 'tenant_id'),
- ]:
- try:
- cur.execute(f"SELECT {col} AS t, COUNT(*) AS c FROM {tbl} GROUP BY {col} ORDER BY {col}")
- dist = cur.fetchall()
- info = ", ".join(f"{r['t']}:{r['c']}" for r in dist) or "(空表)"
- print(f" {tbl:<32} → {info}")
- except pymysql.err.ProgrammingError as ex:
- print(f" {tbl:<32} → 表不存在? {ex.args[-1] if ex.args else ex}")
- print("\n=== SysUser 总数 & 默认租户用户数 ===")
- cur.execute("SELECT COUNT(*) AS c FROM SysUser")
- print(f" SysUser 总数: {cur.fetchone()['c']}")
- for t in (1, 1300000000001):
- cur.execute("SELECT COUNT(*) AS c FROM SysUser WHERE TenantId=%s", (t,))
- print(f" TenantId={t:>15}: {cur.fetchone()['c']} 人")
- conn.close()
- if __name__ == "__main__":
- main()
|