Thanks for the insight Mike. I guess the best way to go about that would be to just call the raw insert sql statemen in the migration? like in https://stackoverflow.com/questions/23206562/sqlalchemy-executing-raw-sql-with-parameter-bindings/23206636#23206636
Since this app is not in production yet, would it be easier to make the current schema the initial schema and just insert the data that is in the MediaChapter table into the new schema just once? I guess could use bulk_insert() to do that? On Wednesday, June 7, 2017 at 6:14:39 PM UTC-4, mike bayer wrote: > > > > On 06/07/2017 04:44 PM, Michael wrote: > > Hi all, I have a class called MediaChapter(Base), which I've refactored > > into MediaBase(Base) and MediaChapter(MediaBase) When I run the > > migration, I see: > > > > | > > psycopg2.IntegrityError:insert orupdate on table "mediachapter"violates > > foreign key constraint "fk_mediachapter_id_mediabase" > > DETAIL:Key(id)=(570)isnotpresent intable "mediabase". > > > here's the real error with the SQL: > > sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) insert or > update on table "mediachapter" violates foreign key constraint > "fk_mediachapter_id_mediabase" > DETAIL: Key (id)=(570) is not present in table "mediabase". > [SQL: 'ALTER TABLE mediachapter ADD CONSTRAINT > fk_mediachapter_id_mediabase FOREIGN KEY(id) REFERENCES mediabase (id)'] > > the error means that your "mediachapter" table contains an id, "570", > which is not present in the "mediabase" table. > > it looks like you are starting with a populated "mediachapter" table > then adding a new table "mediabase". Before you create the constraint, > you need to run an INSERT on "mediabase" that selects from > "mediachapter", like: > > INSERT INTO mediabase (id, col1, col2, ...) SELECT id, col1, col2, .. > FROM mediachapter > > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.