Используйте Factory Boy и SqlAlchemy, чтобы заполнить мою базу данных тестовыми данными.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Используйте Factory Boy и SqlAlchemy, чтобы заполнить мою базу данных тестовыми данными.

Сообщение Anonymous »

Я пытаюсь написать сценарий для заполнения базы данных фиктивными данными, но все мои попытки сделать это приводят к сбою, который, как я ожидал, обработает сеанс ORM, например, фиксация родительских записей перед попыткой фиксации дочерних записей. .
У меня есть следующие модели:

Код: Выделить всё

class Base(DeclarativeBase):
pass

class One(Base):
__tablename__ = "one"
id: Mapped[int] = mapped_column(primary_key=True)
twos: Mapped[List["Two"]] = relationship(back_populates="one")

class Two(Base):
__tablename__ = "two"
id: Mapped[int] = mapped_column(primary_key=True)
one_id: Mapped[int] = mapped_column(ForeignKey("one.id"))
one: Mapped["A"] = relationship(back_populates="twos")
и следующие фабрики:

Код: Выделить всё

class OneFactory(SQLAlchemyModelFactory):
class Meta:
model = models.One
sqlalchemy_session = db.session
id = Sequence(lambda n: n)

class TwoFactory(SQLAlchemyModelFactory):
class Meta:
model = models.Two
sqlalchemy_session = db.session

id = Sequence(lambda n: n)
one = SubFactory(OneFactory)
который я инициализирую и пытаюсь зафиксировать следующим образом:

Код: Выделить всё

one = OneFactory()
two = TwoFactory(one=one)
db.session.commit()
Который всегда завершается сбоем на дочерних ограничениях с ошибкой типа

Код: Выделить всё

Cannot add or update a child row: a foreign key constraint fails
Решения, которые я пробовал, но не сработали:
  • Код: Выделить всё

    RelatedFactoryList
    , та же проблема
  • Код: Выделить всё

    SubFactory
    , та же проблема
  • использование sqlalchemy_session_factory и sqlalchemy_session_persistence; происходит сбой из-за того, что экземпляры удерживаются в разных сеансах, или потому, что экземпляр был удален, или его строка отсутствует по иным причинам
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/783 ... -test-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Factory-boy: используйте параметры в поле Factory.List
    Anonymous » » в форуме Python
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Экземпляр Factory Boy с датой начала до даты окончания с использованием SelfAttribute и Faker
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Django Factory Boy, поля изображений не созданы?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Почему поля изображений не создаются в Django Factory Boy?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Org.springframework.beans.factory.BeanCreationException при попытке подключить мою облачную базу данных mongodb к моему
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»