Как в SQLAlchemy 2.0 добавить запись в таблицу, учитывая значения других таблиц?

Как добавить запись в таблицу "Заказ", учитывая связи с таблицами "Поставщик", "Клиент" и "Администратор", чтобы в новой записи участвовали соответствующие Id из каждой из этих таблиц?
  • 29 сентября 2023 г. 8:17
Ответы на вопрос 2
Для добавления записи в таблицу "Заказ" с учетом связей с другими таблицами в SQLAlchemy 2.0 вы можете использовать следующий подход.

1. Определите модели для каждой таблицы в вашей базе данных, используя `declarative_base` из SQLAlchemy.

```python
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.orm import declarative_base, relationship

Base = declarative_base()

class Поставщик(Base):
    __tablename__ = 'Поставщик'
    Id = Column(Integer, primary_key=True)
    # остальные поля таблицы

class Клиент(Base):
    __tablename__ = 'Клиент'
    Id = Column(Integer, primary_key=True)
    # остальные поля таблицы

class Администратор(Base):
    __tablename__ = 'Администратор'
    Id = Column(Integer, primary_key=True)
    # остальные поля таблицы

class Заказ(Base):
    __tablename__ = 'Заказ'
    Id = Column(Integer, primary_key=True)
    ПоставщикId = Column(Integer, ForeignKey('Поставщик.Id'))
    КлиентId = Column(Integer, ForeignKey('Клиент.Id'))
    АдминистраторId = Column(Integer, ForeignKey('Администратор.Id'))
    Поставщик = relationship("Поставщик")
    Клиент = relationship("Клиент")
    Администратор = relationship("Администратор")
    # остальные поля таблицы
```

2. Создайте сессию для работы с базой данных.

```python
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('ключ подключения к вашей базе данных')
Session = sessionmaker(bind=engine)
session = Session()
```

3. Создайте экземпляры моделей для связанных таблиц.

```python
поставщик = Поставщик()  # Создание экземпляра модели "Поставщик"
клиент = Клиент()  # Создание экземпляра модели "Клиент"
администратор = Администратор()  # Создание экземпляра модели "Администратор"
```

4. Добавьте созданные экземпляры в сессию.

```python
session.add(поставщик)  # Добавление экземпляра "Поставщик" в сессию
session.add(клиент)  # Добавление экземпляра "Клиент" в сессию
session.add(администратор)  # Добавление экземпляра "Администратор" в сессию
```

5. Сделайте коммит сессии, чтобы сохранить изменения в базе данных.

```python
session.commit()
```

6. Создайте экземпляр модели "Заказ", установите значения свойств для связей с другими моделями и добавьте его в сессию.

```python
заказ = Заказ()
заказ.Поставщик = поставщик  # Назначение связи с моделью "Поставщик"
заказ.Клиент = клиент  # Назначение связи с моделью "Клиент"
заказ.Администратор = администратор  # Назначение связи с моделью "Администратор"

session.add(заказ)  # Добавление экземпляра "Заказ" в сессию
session.commit()  # Сохранение изменений
```

Теперь у вас будет новая запись в таблице "Заказ", учитывая соответствующие значения из таблиц "Поставщик", "Клиент" и "Администратор".
1) Используйте оператор INSERT INTO для добавления данных в таблицу "Заказ".
2) В столбец "ПоставщикID" вставьте значение, полученное из таблицы "Поставщик", где поле "Имя" равно 'Василий Пупкин'.
3) В столбец "КлиентID" вставьте значение, полученное из другой таблицы (название таблицы не указано).
4) В столбец "АдминистраторID" вставьте значение, полученное из еще одной таблицы (название таблицы не указано).
5) Для остальных полей укажите соответствующие значения.
6) Настройте отображение данных на вашем фреймворке самостоятельно.
Похожие вопросы