Hello,
I want to copy some tables from one database to another using SQLAlchemy.
The tables have circular dependency which is resolved by use_alter
attribute.
class Product(Base):
__tablename__ = 'products'
Int_Class_ID = Column(Integer, primary_key=True)
components = relationship("Component", passive_deletes=True,cascade =
"all,delete-orphan",lazy='dynamic' )
class Component(Base):
__tablename__ = 'components'
Int_Class_ID = Column(Integer, primary_key=True)
product_id = Column(Integer, ForeignKey('products.Int_Class_ID' ,
ondelete='cascade'),nullable=True)
connection_id = Column(Integer,ForeignKey('connections.Int_Class_ID' ,
ondelete='cascade',use_alter=True,name='connection_component'))
ports = relationship("Port", passive_deletes=True,cascade =
"all,delete-orphan",lazy='dynamic' )
Name = Column(Text)
class Port(Base):
__tablename__ = 'ports'
Int_Class_ID = Column(Integer, primary_key=True)
component_id = Column(Integer, ForeignKey('components.Int_Class_ID' ,
ondelete='cascade'))
connections = relationship("Connection", passive_deletes=True,cascade =
"all,delete-orphan",lazy='dynamic' )
Name = Column(Text)
class Connection(Base):
__tablename__ = 'connections'
Int_Class_ID = Column(Integer, primary_key=True)
port_id = Column(Integer, ForeignKey('ports.Int_Class_ID' ,
ondelete='cascade'))
components = relationship("Component", post_update=True,
passive_deletes=True,cascade = "all,delete-orphan",lazy='dynamic' )
Name = Column(Text)
When I create tables with their columns and insert the data from the old
tables to the new tables, I have an IntegrityError, due to ForeignKey
constraint on the 'Component' table.
I suppose this is due to the circular dependency. So I tried to drop all
constraints, migrate the data and then add the constraints. Until the data
migration is successful, but I do not succeed to add the constraints to the
tables.
table.append_constraint(Constraint)
seems not to affect the database. No SQL commands are emitted.
What is the best way to copy such tables using SQLAlchemy?
Any help is appreciated.
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.