Fix import script: auto-detect FK tables before truncate
This commit is contained in:
parent
338c0ecc0f
commit
42fb16d67e
@ -58,16 +58,22 @@ def main():
|
||||
|
||||
with engine.begin() as conn:
|
||||
if args.truncate:
|
||||
print("[INFO] Nettoyage des tables dépendantes + TRUNCATE servers")
|
||||
print("[INFO] Nettoyage des tables référençant servers")
|
||||
if not args.dry_run:
|
||||
for tbl in ("server_ips", "qualys_assets", "audits",
|
||||
"session_servers", "planning_sessions",
|
||||
"patch_history", "ref_correspondance"):
|
||||
try:
|
||||
conn.execute(text(f"DELETE FROM {tbl}"))
|
||||
except Exception as e:
|
||||
print(f" [WARN] DELETE {tbl}: {e}")
|
||||
fk_tables = conn.execute(text("""
|
||||
SELECT DISTINCT tc.table_name
|
||||
FROM information_schema.table_constraints tc
|
||||
JOIN information_schema.constraint_column_usage ccu
|
||||
ON tc.constraint_name = ccu.constraint_name
|
||||
WHERE tc.constraint_type = 'FOREIGN KEY'
|
||||
AND ccu.table_name = 'servers'
|
||||
AND tc.table_name != 'servers'
|
||||
""")).fetchall()
|
||||
for (tbl,) in fk_tables:
|
||||
conn.execute(text(f"DELETE FROM {tbl}"))
|
||||
print(f" [OK] cleared {tbl}")
|
||||
conn.execute(text("TRUNCATE servers RESTART IDENTITY CASCADE"))
|
||||
print(" [OK] servers truncated")
|
||||
|
||||
inserted = 0
|
||||
skipped = 0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user