В этой главе мы сосредоточимся на связанных объектах в SQLAlchemy ORM.
Теперь, когда мы создаем объект Customer, будет представлена пустая коллекция счетов в форме списка Python.
c1 = Customer(name = "Gopal Krishna", address = "Bank Street Hydarebad", email = "[email protected]")
Атрибут invoices в c1.invoices будет пустым списком. Мы можем назначить элементы в списке как —
c1.invoices = [Invoice(invno = 10, amount = 15000), Invoice(invno = 14, amount = 3850)]
Давайте передадим этот объект в базу данных, используя объект Session следующим образом:
from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind = engine) session = Session() session.add(c1) session.commit()
Это автоматически сгенерирует запросы INSERT для таблиц клиентов и счетов —
INSERT INTO customers (name, address, email) VALUES (?, ?, ?) ('Gopal Krishna', 'Bank Street Hydarebad', '[email protected]') INSERT INTO invoices (custid, invno, amount) VALUES (?, ?, ?) (2, 10, 15000) INSERT INTO invoices (custid, invno, amount) VALUES (?, ?, ?) (2, 14, 3850)
Давайте теперь посмотрим на содержимое таблицы клиентов и таблицы счетов в табличном представлении SQLiteStudio —
Вы можете создать объект Customer, предоставив сопоставленный атрибут счетов в самом конструкторе, используя команду ниже —
c2 = [ Customer( name = "Govind Pant", address = "Gulmandi Aurangabad", email = "[email protected]", invoices = [Invoice(invno = 3, amount = 10000), Invoice(invno = 4, amount = 5000)] ) ]
Или список объектов, которые будут добавлены с использованием функции add_all () объекта сеанса, как показано ниже —