2026.06.04 frontend építés közben
This commit is contained in:
63
backend/scripts/list_related_tables.py
Normal file
63
backend/scripts/list_related_tables.py
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from app.core.config import settings
|
||||
|
||||
async def list_related_tables():
|
||||
engine = create_async_engine(settings.DATABASE_URL, echo=False)
|
||||
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
|
||||
|
||||
async with async_session() as session:
|
||||
# Find foreign key constraints referencing vehicle.assets
|
||||
query = text("""
|
||||
SELECT
|
||||
tc.table_schema,
|
||||
tc.table_name,
|
||||
kcu.column_name,
|
||||
ccu.table_schema AS foreign_table_schema,
|
||||
ccu.table_name AS foreign_table_name,
|
||||
ccu.column_name AS foreign_column_name,
|
||||
rc.delete_rule
|
||||
FROM information_schema.table_constraints AS tc
|
||||
JOIN information_schema.key_column_usage AS kcu
|
||||
ON tc.constraint_name = kcu.constraint_name
|
||||
AND tc.table_schema = kcu.table_schema
|
||||
JOIN information_schema.constraint_column_usage AS ccu
|
||||
ON ccu.constraint_name = tc.constraint_name
|
||||
JOIN information_schema.referential_constraints AS rc
|
||||
ON rc.constraint_name = tc.constraint_name
|
||||
WHERE tc.constraint_type = 'FOREIGN KEY'
|
||||
AND ccu.table_schema = 'vehicle'
|
||||
AND ccu.table_name = 'assets'
|
||||
AND ccu.column_name = 'id'
|
||||
ORDER BY tc.table_name;
|
||||
""")
|
||||
result = await session.execute(query)
|
||||
fks = result.fetchall()
|
||||
print("Foreign keys referencing vehicle.assets (id):")
|
||||
for fk in fks:
|
||||
print(f" {fk[0]}.{fk[1]}.{fk[2]} -> {fk[3]}.{fk[4]}.{fk[5]} (ON DELETE {fk[6]})")
|
||||
|
||||
# Also list tables in vehicle schema
|
||||
query2 = text("""
|
||||
SELECT table_name
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'vehicle'
|
||||
ORDER BY table_name;
|
||||
""")
|
||||
result2 = await session.execute(query2)
|
||||
tables = result2.fetchall()
|
||||
print("\nTables in vehicle schema:")
|
||||
for tbl in tables:
|
||||
print(f" {tbl[0]}")
|
||||
|
||||
await engine.dispose()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(list_related_tables())
|
||||
Reference in New Issue
Block a user