Search code examples
mysqldatabasedatabase-designsqlalchemypylons

Sqlalchemy & Pylons: Adding new tables to a previously defined database?


Say I create tables in Pylons by running

paster setup-app development.ini

It will produce a database file (i.e. mydatabase.db). Now, let's say later I change my model to have more tables and/or columns, how would I ensure that the old data is still preserved and accessible? Do I need to migrate my old database? How does this all work?


Solution

  • As long as you add new tables it should work seamlessly, i.e. it simply creates new tables without touching existing ones. However, if you change existing table schema (e.g. add a new column), you will need to update the DB schema manually or drop/rename that table and run paster setup-app development.ini to recreate it.

    Usually I rename the modified table, run setup-app to create a new clean table and copy the data with something like that:

    INSERT INTO some_table (col1, col2, col3) SELECT (col1, col2, col3) FROM some_table_old