спасибо е.с. за очень подробный и точный ответ, высоко ценится!

способ создания иерархии в форме дочерних родительских отношений между двумя или более экземплярами одного и того же класса.

Как можно было бы создать такие объекты из вложенного словаря, как в примере? Это вообще возможно? Есть ли какой-то другой способ, который будет рекомендован для выполнения такой задачи?

# -*- coding: utf-8 -*-

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, exists
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.schema import Column, ForeignKey
from sqlalchem,y.types import Integer, String

Base = declarative_base()

class Person(Base):
    __tablename__ = 'person';
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    parent_id = Column(Integer, ForeignKey('person.id'))

    def __init__(self, **kwargs):
        self.parent_id = kwargs.get('parent_id', None)
        self.name = kwargs.get('name')
        self.team = kwargs.get('team', [])
        # Is it possible to create more object of this type
        # and establish that their parent_id is ID of this object?


    def __repr__(self):
        return """
        ID: {}
        Name: {}
        ParentID: {}
                """.format(self.id, self.name, self.parent_id)


engine = create_engine('sqlite:///db.sqlite3')
Base.metadata.create_all(engine)
connection = engine.connect()
Session = sessionmaker(bind=engine)
session = Session()

alice = {'name' : 'Alice'}
bob = {'name' : 'Bob', 'team' : [alice, ]}

p1 = Person(bob)
session.add(p1)
session.commit()

Я понимаю итеративный подход, при котором я сначала должен создать родительский объект, а затем перебрать возможные дочерние объекты и создать их. Мне любопытно, есть ли способ сделать это внутри конструктора, а не «снаружи» с помощью циклов.

Ответы на вопрос(1)

Ваш ответ на вопрос