On Dec 28, 2007 6:25 PM, Michael Bayer <[EMAIL PROTECTED]> wrote: > On Dec 28, 2007, at 5:50 AM, Denis S. Otkidach wrote: > > Sure, I can get an object from DB and copy data from new one. But > > there is a lot of object types, so have to invent yet another meta > > description for it (while it already exists in sqlalchemy). And > > requirements changes often, so I have to change scheme in 2 places. > > This is not good and error prone. Why I have to invent new description > > when there is already one from sqlalchemy mapping? Can't I use it for > > my purpose? Something like merge(objFromDB, newObj) will solve the > > problem. > > session.merge() does copy the attributes of one object into another. > theres some bugs with dont_load that have been fixed in trunk so try > out the trunk if you have problems.
This doesn't work: I have the same IntegrityError or FlushError depending on whether original object exists in the session (line session.clear() is commented in the code below). What I do wrong? --->8--- import sqlalchemy as sa, logging from sqlalchemy.orm import mapper, sessionmaker logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) logging.basicConfig() class ModelObject(object): def __init__(self, id, title): self.id = id self.title = title metadata = sa.MetaData() objectTable = sa.Table( 'Objects', metadata, sa.Column('id', sa.Integer, primary_key=True), sa.Column('title', sa.String(255), nullable=False), ) objectsMapper = mapper(ModelObject, objectTable) engine = sa.create_engine('sqlite://') metadata.create_all(engine, checkfirst=True) session = sessionmaker(bind=engine)() obj1 = ModelObject(1, u'title1') session.save(obj1) session.commit() session.clear() # Another program. We have to insure that object with id=1 exists in DB and has # certain properties. obj2 = ModelObject(1, u'title2') session.merge(obj2) session.commit() --->8--- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---