Как добавить запись в таблицу с использованием связи в SQLAlchemy 2.0.20?

В чем проблема в следующем фрагменте кода: `add_work.admin_worked = [Admin_work(type_work='Registration', callback_data=callback_data)]`?
  • 18 сентября 2023 г. 17:37
Ответы на вопрос 1
В коде, который вы предоставили, используется связь между моделями для добавления записи в таблицу. 

Чтобы добавить запись в таблицу с использованием связи в SQLAlchemy, вам необходимо сначала создать экземпляр модели, представляющей таблицу, в которую вы хотите добавить запись. Затем вы можете использовать связь, чтобы связать эту запись с другими записями в связанной таблице. 

Ниже приведен пример использования связи для добавления записи в таблицу:

```python
# Предположим, что есть две таблицы: Work и Admin_work
class Work(Base):
    __tablename__ = 'work'
    id = Column(Integer, primary_key=True)
    name = Column(String)

class Admin_work(Base):
    __tablename__ = 'admin_work'
    id = Column(Integer, primary_key=True)
    type_work = Column(String)
    callback_data = Column(String)
    work_id = Column(Integer, ForeignKey('work.id'))
    work = relationship('Work', backref='admin_worked')

# Создаем экземпляр Work
work = Work(name='Some Work')

# Создаем экземпляр Admin_work, связывая его с work
admin_work = Admin_work(type_work='Registration', callback_data=callback_data)
work.admin_worked.append(admin_work)

# Добавляем work и admin_work в сессию
session.add(work)
session.add(admin_work)

# Применяем изменения
session.commit()
```

В предоставленном вами фрагменте кода проблема заключается в том, что вы пытаетесь присвоить значение списку, но это неверно. Вместо этого, вы должны добавить экземпляр `Admin_work` к списку `work.admin_worked`, как показано в примере выше.
Похожие вопросы