База данных dJango Production and Test Проверка качества данных

Я хочу создать проверку качества данных между нашей производственной средой и средой разработки.
Это необходимо для того, чтобы убедиться, что шаблоны наших систем настроены одинаково, в базу данных не будут записываться данные только для чтения

модели таковы:

class Plan(models.Model):
DatabaseOperations.max_name_length = lambda s: 40

# Define fields that match the columns in your existing table
PROJECT_CODE = models.TextField(primary_key=True)
PROJECT_NAME = models.TextField()
IS_TEMPLATE_PROJECT = models.TextField()
PLANTYPE = models.TextField()
ABR_SUPP_BY_SSG = models.TextField()

class Meta:
    db_table = '\"schema\".\"table\"'  # specify the schema and table name
    managed = False  # Prevent Django from managing the table schema

def __str__(self):
    return self.PROJECT_NAME

class Activity(models.Model): DatabaseOperations.max_name_length = lambda s: 40

# Define fields that match the columns in your existing table
ACTIVITY_ID = models.TextField(primary_key=True)
PROJECT_CODE = models.ForeignKey(Plan, on_delete=models.DO_NOTHING, db_column='PROJECT_CODE', related_name='activities')
ACTIVITY_NAME = models.TextField()
LINE_IDENTIFIER = models.IntegerField()
class Meta:
    db_table = '\"schamea\".\"table\"'  # specify the schema and table name
    managed = False  # Prevent Django from managing the table schema

def __str__(self):
    return self.ACTIVITY_NAME

Я использую HTML-форму, чтобы позволить пользователям выбрать базу данных для использования (больше будет добавлено позже

).
        <form method="GET" action="{% url 'list_plans' %}">
    <label for="Databases">Choose Databases:</label><br>
    <input type="checkbox" id="db1" name="databases" value="db1">
    <label for="db1">Production</label><br>
    <input type="checkbox" id="db2" name="databases" value="db2">
    <label for="db2">Test</label><br>
    <button type="submit">Load Plans</button>
    </form>

Из моего представления я получаю def list_plans(request): # Определяем имена баз данных для производства и тестирования selected_databases = request.GET.getlist('databases')

try:
    PlanModel = apps.get_model('compareTemplate', 'Plan')
    ActivityModel = apps.get_model('compareTemplate', 'Activity')
    combined_plans = []

    for database_name in selected_databases:
        # region Prefetch activities for each plan and filter on templates
        activities_prefetch = Prefetch('activities', queryset=ActivityModel.objects.using(database_name))

        # Apply filter for IS_TEMPLATE_PROJECT = 'true' and prefetch related activities
        filtered_plans = PlanModel.objects.using(database_name).filter(IS_TEMPLATE_PROJECT='true').prefetch_related(activities_prefetch)

        # region Prepare the plan data with field names and values
        for plan in filtered_plans:
            activities_data = [
                {'fields': get_fields_and_values(activity)}
                for activity in plan.activities.all()
            ]
            plan_data = {
                'database': database_name,
                'fields': get_fields_and_values(plan),
                'activities': activities_data
            }
            combined_plans.append(plan_data)

Теперь мне нужно сравнить поля в моей таблице (db1) prod.Plans с моей таблицей (db2) test.Plans

этот код добавляет их, но мне нужно соединить их

Соединение будет происходить на PROJECT_CODE и LINE_INDENTIFIER в таблице activities и PROJECT_CODE в таблице plans.

В конечном итоге я хочу получить html-вывод следующего содержания

project_name table field line_number prod_value test_value

Я новичок в python, мне потребовалась неделя, чтобы разобраться с этим, пожалуйста, будьте добры :)

У меня нет доступа к БД как у администратора и не будет, и мы не можем создать связь между двумя БД из-за политики

Спасибо

Вернуться на верх