Forget the old code. I needed to use make_transient() This example code work nearly fine (FOREIGN KEY constraints not used in sqlite)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sqlalchemy as sa import sqlalchemy.ext.declarative as sad import sqlalchemy.orm as sao import sqlalchemy.orm.session as sas from sqlalchemy_utils import create_database _Base = sad.declarative_base() class Child(_Base): __tablename__ = 'Child' _oid = sa.Column('oid', sa.Integer, primary_key=True) _name = sa.Column('name', sa.String) def __init__(self, name): self._name = name class Parent(_Base): __tablename__ = 'Parent' _oid = sa.Column('oid', sa.Integer, primary_key=True) _name = sa.Column('name', sa.String) _child_fk = sa.Column('child', sa.Integer, sa.ForeignKey('Child.oid')) _child = sao.relationship('Child') def __init__(self, name): super(Parent, self).__init__() self._name = name pstr = 'postgres://postgres@localhost/Family' sstr = 'sqlite:///family.db' pengine = sa.create_engine(pstr, echo = True) sengine = sa.create_engine(sstr, echo = True) def createPostgreSQL_Family(): """Create for PostgreSQL the scheme and the data for testing.""" # create schema create_database(pengine.url) _Base.metadata.create_all(pengine) psession = sao.sessionmaker(bind = pengine)() # child c = Child('Jim Bob') psession.add(c) psession.commit() # parent p = Parent('Mr. Doe') p._child = c psession.add(p) psession.commit() psession.close() def convert(): # get one object from the PostgreSQL database psession = sao.sessionmaker(bind = pengine)() p = psession.query(Parent).first() sas.make_transient(p) #p._oid = None c = psession.query(Child).first() sas.make_transient(c) #c._oid = None psession.close() # create and open the SQLite database create_database(sengine.url) _Base.metadata.create_all(sengine) # add/convert the one object to the new database ssession = sao.sessionmaker(bind = sengine)() ssession.add(c) ssession.add(p) ssession.commit() if __name__ == '__main__': #createPostgreSQL_Family() convert() -- 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+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.