SQLALCHEMY DEDETE на таблице «Задачи» нарушают ограничение иностранного ключа для каскадного режимаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQLALCHEMY DEDETE на таблице «Задачи» нарушают ограничение иностранного ключа для каскадного режима

Сообщение Anonymous »

У меня есть следующая таблица Postgres < /p>
dbname=# \d+ tasks
Table "public.tasks"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------------------+-----------------------------+-----------+----------+---------+----------+--------------+-------------
id | character varying | | not null | | extended | |
external_id | character varying | | not null | | extended | |
rq_id | character varying | | not null | | extended | |
priority | integer | | not null | | plain | |
status | taskstatus | | not null | | plain | |
creation_time | timestamp without time zone | | not null | | plain | |
other fields ...
Indexes:
"tasks_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "solutions" CONSTRAINT "solutions_task_id_fkey" FOREIGN KEY (task_id) REFERENCES tasks(id)
TABLE "tasks_files" CONSTRAINT "tasks_files_task_id_fkey" FOREIGN KEY (task_id) REFERENCES tasks(id)
Access method: heap
< /code>
Таблица, созданная с помощью класса Sqlalchemy < /p>
class Task(Base):
__tablename__ = 'tasks'

id = Column(String, unique=True, nullable=False, primary_key=True)
external_id = Column(String, nullable=False)
rq_id = Column(String, nullable=False)
priority = Column(Integer, nullable=False)
status = Column(Enum(TaskStatus), nullable=False)
creation_time = Column(DateTime, nullable=False)
...
files: Mapped[List["TaskFile"]] = relationship(cascade="all, delete")
solution: Mapped[List["Solution"]] = relationship(cascade="all, delete")
< /code>
У меня есть функция Python, функция, выполняющая команду SQL, и у меня есть ошибка: < /p>

dbname=# DELETE FROM tasks WHERE tasks.status = 'SOLVED' AND tasks.creation_time None:
solved_days_ago = datetime.utcnow() - timedelta(days=solved_task_window_days)
failed_days_ago = datetime.utcnow() - timedelta(days=error_task_window_days)
print("XXX_", db.query(Task).filter(
or_(
and_(
Task.status == TaskStatus.SOLVED,
Task.creation_time

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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