`idn` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,       # название
  `parent` int(11) DEFAULT NULL,           # id родителя`idn` int(11) NOT NULL AUTO_INCREMENT, 
  `idcat` int(11) DEFAULT NULL,                   # id категории 
  
  Мне нужно выбрать из таблицы1 все подкатегории определенной категории (сейчас там два уровня вложенности, врядли будет больше) и связанные с ними записи из таблицы2. В некоторых категориях связей с таблицей2 нет.
class Category(Base):
    __tablename__ = 'category'
    idn = Column(INTEGER(11), primary_key=True)
    name = Column(VARCHAR(255))
    cparent = Column(INTEGER(11), ForeignKey('category.idn'))
    children = relationship('Category',
                            # cascade deletions
                            cascade="all",
                            # many to one + adjacency list - remote_side
                            # is required to reference the 'remote'
                            # column in the join condition.
                            backref=backref("parent", remote_side='category.idn'),
                            # children will be represented as a dictionary
                            # on the "name" attribute.
                            collection_class=attribute_mapped_collection('name'),
                            lazy="joined",
                            join_depth=3,
                            )
    product = relationship('Product',
                               collection_class=list,
                               backref=backref("category", remote_side='category.idn'),
                               lazy="joined",
                               join_depth=3, # так как продукты у меня связаны только с третьим уровнем.
                               )
    def __init__(self, name, parent=None):
        self.name = name
        self.parent = parent
class Product(Base):
    __tablename__ = 'product'
    idn = Column(INTEGER(11), primary_key=True)
    idcat = Column(INTEGER(11), ForeignKey('category.idn'))
    cat = relationship("Category")
    data = Column(VARCHAR(255))root_node = session.query( Category).filter( Category.name == root_node_name).first()