from sqlalchemy import ( Column, Integer, String, create_engine, ForeignKey)from sqlalchemy.orm import create_sessionfrom sqlalchemy.ext.declarative import declarative_base
e = create_engine("sqlite:///test.db", echo=True)Base = declarative_base(bind=e)
class Employee(Base): __tablename__ = 'employees'
employee_id = Column(Integer, primary_key=True) name = Column(String(50)) type = Column(String(30), nullable=False)
__mapper_args__ = { 'polymorphic_identity': 'employee', 'polymorphic_on': type, 'with_polymorphic': '*' }
def __init__(self, name): self.name = name
class Manager(Employee): __tablename__ = 'managers' __mapper_args__ = {'polymorphic_identity': 'manager'}
employee_id = Column( Integer, ForeignKey('employees.employee_id'), primary_key=True ) manager_data = Column(String(50))
def __init__(self, name, manager_data): super(Manager, self).__init__(name) self.manager_data = manager_data
class Owner(Manager): __tablename__ = 'owners' __mapper_args__ = {'polymorphic_identity': 'owner'}
employee_id = Column( Integer, ForeignKey('employees.employee_id'), ForeignKey('managers.employee_id'), primary_key=True ) owner_secret = Column(String(50))
def __init__(self, name, manager_data, owner_secret): super(Owner, self).__init__(name, manager_data) self.owner_secret = owner_secret
Base.metadata.drop_all()Base.metadata.create_all()
s = create_session(bind=e, autoflush=True, autocommit=False) o = Owner('nosklo', 'mgr001', 'ownerpwd')s.add(o)s.commit()
el = s.query(Owner).one()# for el in session.query(Product, Event,Travel).all():print(el)el.employee_id = 33# el.manager_data='hello's.commit()
Hi everyone,I am searching but I find no solution for my issue that is why I decided to ask here. Thanks in advance for your attention.The issue is related to the update of a second level hierarchy object Id. I am creating a hierarchy, following the recommendations in the tutorials but I find that when I want to update the id, which is the link between all the entities through the foreign key, only the first and the third level (last level) of the hierarchy update the id value. I think this could be an issue because the id is what will link the tables for further queries. I attach an example of the code:
--SQLAlchemy -The Python SQL Toolkit and Object Relational MapperTo post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description.---You received this message because you are subscribed to the Google Groups "sqlalchemy" group.To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+...@googlegroups.com.To post to this group, send email to sqlal...@googlegroups.com.Visit this group at https://groups.google.com/group/sqlalchemy.To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/c204902f-bab1-4b01-8937-0c2746758ca1%40googlegroups.com.For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to sqlal...@googlegroups.com.