Eu concordo em geral, com John . A seleção de uma passagem e INSERIR IGNORE ing não seria prático para um grande banco de dados e criação de replicação ou diferencial multi-pass SELECT / INSERIR IGNORE s provavelmente seria mais difícil e mais propenso a erros.
Pessoalmente, eu uso SQLAlchemy como um ORM em TurboGears . Para fazer migrações de esquema eu corro:
tg-admin sql status
Para ver a diferença entre os esquemas vivo e desenvolvimento, em seguida, escrever manualmente (e controle de versão) scripts DDL para fazer as mudanças necessárias.
Para aqueles que usam SQLAlchemy independente (ou seja, não sob TurboGears), a sql statusfuncionalidade é bastante simples e pode ser encontrada aqui na fonte TG: http://svn.turbogears.org/branches/1.1/turbogears/command/sacommand.py (há versões para versões mais antigas do Python / SA no ramo 1.0, também).