átlagos kiegészítséek jó sok
This commit is contained in:
47
backend/app/scripts/check_tables.py
Normal file
47
backend/app/scripts/check_tables.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Check tables in system and gamification schemas.
|
||||
"""
|
||||
import asyncio
|
||||
from sqlalchemy.ext.asyncio import create_async_engine
|
||||
from sqlalchemy import text
|
||||
|
||||
async def check():
|
||||
from app.core.config import settings
|
||||
engine = create_async_engine(str(settings.SQLALCHEMY_DATABASE_URI))
|
||||
|
||||
async with engine.begin() as conn:
|
||||
# List tables
|
||||
result = await conn.execute(text("""
|
||||
SELECT table_schema, table_name,
|
||||
(SELECT count(*) FROM information_schema.columns c WHERE c.table_schema=t.table_schema AND c.table_name=t.table_name) as column_count
|
||||
FROM information_schema.tables t
|
||||
WHERE table_name IN ('competitions', 'user_scores')
|
||||
ORDER BY table_schema;
|
||||
"""))
|
||||
rows = result.fetchall()
|
||||
print("Tables found:")
|
||||
for row in rows:
|
||||
print(f" {row.table_schema}.{row.table_name} ({row.column_count} columns)")
|
||||
# Count rows
|
||||
count_result = await conn.execute(text(f'SELECT COUNT(*) FROM "{row.table_schema}"."{row.table_name}"'))
|
||||
count = count_result.scalar()
|
||||
print(f" Rows: {count}")
|
||||
|
||||
# Check foreign keys
|
||||
result = await conn.execute(text("""
|
||||
SELECT conname, conrelid::regclass as source_table, confrelid::regclass as target_table
|
||||
FROM pg_constraint
|
||||
WHERE contype = 'f'
|
||||
AND (conrelid::regclass::text LIKE '%competitions%' OR conrelid::regclass::text LIKE '%user_scores%'
|
||||
OR confrelid::regclass::text LIKE '%competitions%' OR confrelid::regclass::text LIKE '%user_scores%');
|
||||
"""))
|
||||
fks = result.fetchall()
|
||||
print("\nForeign keys involving these tables:")
|
||||
for fk in fks:
|
||||
print(f" {fk.conname}: {fk.source_table} -> {fk.target_table}")
|
||||
|
||||
await engine.dispose()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(check())
|
||||
Reference in New Issue
Block a user