Как запрашивать дополнительные базы данных с помощью курсора в Django Pytests

Я разрабатываю приложение Django (Django v3.2.10, pytest v7.0.1, pytest-django v4.5. 2), который использует курсор для выполнения необработанных запросов к моей вторичной БД: my_db2, но при запуске тестов все запросы возвращают пустые результаты, как если бы они выполнялись в параллельных транзакциях

Мой тестовый файл:

@pytest.mark.django_db(transaction=True, databases=['default', 'my_db2'])
class TestItems:
    def test_people(self):
      person1 = PeopleFactory()  # Adds 1 person to my_db2
      assert fetch_all_persons() == 1 # Fails Returns 0

Моя функция:

from django.db import connections


def fetch_all_persons():
      with connections['my_db2'].cursor() as cursor:
        cursor.execute(f"SELECT * FROM Persons")
        return len(list(cursor.fetchall())):

Согласно документации transaction=True должен предотвратить эту проблему, но этого не происходит, кто-нибудь знает, как это исправить?

Примечание.- Использование ORM не является вариантом, это просто упрощенный пример для представления проблемы. Реально используемые запросы намного сложнее.

@hoefling и @Arkadiusz Łukasiewicz были правы, мне просто нужно было добавить соответствующую БД внутри фабрик:

class PeopleFactory(factory.django.DjangoModelFactory):
    id = factory.Sequence(lambda x: x + 1)
    name = factory.Faker('first_name')

    class Meta:
        model = People
        database = 'my_db2'

Спасибо вам обоим.

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