| 1 | from django.core.management.base import BaseCommand
|
|---|
| 2 | from django.db import connection
|
|---|
| 3 | from django.apps import apps
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 | class Command(BaseCommand):
|
|---|
| 7 | help = "Prints and saves all table names and columns from all apps"
|
|---|
| 8 |
|
|---|
| 9 | def handle(self, *args, **kwargs):
|
|---|
| 10 | # File to save the output
|
|---|
| 11 | output_file = "table_info.txt"
|
|---|
| 12 |
|
|---|
| 13 | with connection.cursor() as cursor:
|
|---|
| 14 | self.stdout.write("Fetching all table names and columns...\n")
|
|---|
| 15 | data = []
|
|---|
| 16 |
|
|---|
| 17 | for model in apps.get_models():
|
|---|
| 18 | # Get table name
|
|---|
| 19 | table_name = model._meta.db_table
|
|---|
| 20 | # Get columns from the database
|
|---|
| 21 | cursor.execute(f"PRAGMA table_info({table_name});")
|
|---|
| 22 | columns = cursor.fetchall()
|
|---|
| 23 |
|
|---|
| 24 | # Process columns
|
|---|
| 25 | column_names = [column[1] for column in columns] # Adjust index as per your DB dialect
|
|---|
| 26 | data.append(f"Table: {table_name}\nColumns: {', '.join(column_names)}\n")
|
|---|
| 27 |
|
|---|
| 28 | # Print the table info
|
|---|
| 29 | self.stdout.write(f"Table: {table_name}")
|
|---|
| 30 | self.stdout.write(f"Columns: {', '.join(column_names)}\n")
|
|---|
| 31 |
|
|---|
| 32 | # Save to a file
|
|---|
| 33 | self.stdout.write(f"\nSaving data to {output_file}...")
|
|---|
| 34 | with open(output_file, "w") as file:
|
|---|
| 35 | file.writelines(data)
|
|---|
| 36 |
|
|---|
| 37 | self.stdout.write(self.style.SUCCESS("Operation completed successfully."))
|
|---|