thanks, ive put this up as ticket 245.  i want to get 0.2.6 out since so much has been fixed already so i might not have fixes for these in that release.

On Jul 19, 2006, at 7:43 PM, Sol wrote:

from sqlalchemy import *


db = create_engine("sqlite:///:memory:")


metadata = BoundMetaData(db)

session = create_session()


class Employee(object):

    def __init__(self, name):

        self.name = name

    def __repr__(self):

        return self.__class__.__name__ + " " + self.name


class Manager(Employee):

    def __init__(self, name, manager_data):

        self.name = name

        self.manager_data = manager_data

    def __repr__(self):

        return self.__class__.__name__ + " " + self.name + " " +  self.manager_data


class Engineer(Employee):

    def __init__(self, name, engineer_info):

        self.name = name

        self.engineer_info = engineer_info

    def __repr__(self):

        return self.__class__.__name__ + " " + self.name + " " +  self.engineer_info



employees_table = Table('employees', metadata, 

    Column('employee_id', Integer, primary_key=True),

    Column('name', String(50)),

    Column('manager_data', String(50)),

    Column('engineer_info', String(50)),

    Column('type', String(20))

)


employee_mapper = mapper(Employee, employees_table, polymorphic_on=employees_table.c.type)

manager_mapper = mapper(Manager, inherits=employee_mapper, polymorphic_identity='manager')

engineer_mapper = mapper(Engineer, inherits=employee_mapper, polymorphic_identity='engineer')



employees_table.create()


session.save(Manager('Tom', 'knows how to manage things'))

session.save(Engineer('Kurt', 'knows how to hack'))

session.flush()



# this gives you [Engineer Kurt knows how to hack, Manager Tom knows how to manage things]

# as it should be

session.query(Employee).select()


# this gives you [Engineer Kurt knows how to hack, Manager Tom knows how to manage things]

# instead of [Engineer Kurt knows how to hack]

session.query(Engineer).select()



# this gives you [Engineer Kurt knows how to hack, Manager Tom knows how to manage things]

# instead of [Manager Tom knows how to manage things]

session.query(Manager).select()


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to