south talk

35
Schema Migrations for Django Friday, September 27, 13

Upload: anna-callahan

Post on 07-Nov-2014

743 views

Category:

News & Politics


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: South talk

Schema Migrations for Django

Friday, September 27, 13

Page 2: South talk

WHAT WE’LL COVER

How to use South

• South and git

• Data migrations

• Model inheritance

• Wacky Stuff

Friday, September 27, 13

Page 3: South talk

WHY SOUTH?

Generally:

• Migrations allow you to synchronize your database with your code.

• Important for:

• multiple developers• rolling back• migrating data • deploying

Specifically:

• South is the standard

• South is being rolled into Django in 1.7

• South is awesome & fun!

Friday, September 27, 13

Page 4: South talk

SETTING UPsouth.readthedocs.org

Friday, September 27, 13

Page 5: South talk

SETTING UP

OR

pip install south

1. Install

Friday, September 27, 13

Page 6: South talk

SETTING UP2. Installed apps

Friday, September 27, 13

Page 7: South talk

SETTING UP3. syncdb

Friday, September 27, 13

Page 8: South talk

SETTING UP(Create an app & models)

Friday, September 27, 13

Page 9: South talk

SETTING UP

Existing apps:convert_to_south appname

New apps:schemamigration appname --initial

4. Setup each app

Friday, September 27, 13

Page 10: South talk

HOW IT WORKS

• Migrations folder

• South migrations history table

• Models.py

• Database schema & data

Creates:

Reads from:

Alters:

Friday, September 27, 13

Page 11: South talk

HOW IT WORKS

Friday, September 27, 13

Page 12: South talk

HOW IT WORKS

Friday, September 27, 13

Page 13: South talk

HOW IT WORKS

Friday, September 27, 13

Page 14: South talk

NORMAL WORKFLOWupdate modelmanage.py schemamigration appname --automanage.py migrate (appname)

eureka! a better model...manage.py migrate backwards (zero)

update modelmanage.py migrate --list

delete files***redo the schemamigrationmanage.py schemamigration appname --auto

{

Friday, September 27, 13

Page 15: South talk

NORMAL WORKFLOWupdate modelmanage.py schemamigration appname --automanage.py migrate (appname)

eureka! a better model...manage.py migrate backwards (zero)

update modelmanage.py migrate --list

delete files***redo the schemamigrationmanage.py schemamigration appname --auto

{

DANGER!

Friday, September 27, 13

Page 16: South talk

AVOIDING GIT TROUBLES

Friday, September 27, 13

Page 17: South talk

AVOIDING GIT TROUBLES

• update Authors model• schemamigration: 0002

• eureka!• migrates back to 0001

• deletes migration 0002• creates new 0002

• writes code• pulls code• migrates to 0002

• writes code• pulls code• ghost migration

Dev #1: Author Dev #2: Blog

Friday, September 27, 13

Page 18: South talk

AVOIDING GIT TROUBLES

Resolving:NEVER

delete a migration that has others have access to

Friday, September 27, 13

Page 19: South talk

AVOIDING GIT TROUBLES

• update Authors model• schemamigration: 0002

• updates Blog model• schemamigration: 0003

• pushes

Dev #1: Author Dev #2: Blog

• update Blog model• schemamigration: 0002

• updates Blog model• schemamigration: 0003

• pulls

Friday, September 27, 13

Page 20: South talk

AVOIDING GIT TROUBLES

• update Authors model• schemamigration: 0002

• updates Blog model• schemamigration: 0003

• pushes

Dev #1: Author Dev #2: Blog

• update Blog model• schemamigration: 0002

• updates Blog model• schemamigration: 0003

• pulls

= CONFLICT

Friday, September 27, 13

Page 21: South talk

AVOIDING GIT TROUBLESBETTER:

git feng shui

models, migrations

other code

other code

previous commit

FEATURE DEVELOPMENT

models, migrations

Friday, September 27, 13

Page 22: South talk

DATA MIGRATIONSMove date_of_birth from Authors to UserProfile

Friday, September 27, 13

Page 23: South talk

DATA MIGRATIONSSANDWICH

schemamigration

datamigration

schemamigration

Friday, September 27, 13

Page 24: South talk

DATA MIGRATIONSBOTTOM SLICE:schemamigration

Friday, September 27, 13

Page 25: South talk

DATA MIGRATIONSMIDDLE:

datamigration

Friday, September 27, 13

Page 26: South talk

DATA MIGRATIONSMIDDLE:

datamigration

Friday, September 27, 13

Page 27: South talk

DATA MIGRATIONSMIDDLE:

datamigration

Friday, September 27, 13

Page 28: South talk

DATA MIGRATIONSTOP SLICE:

schemamigration

Remove date_of_birth from Author

Friday, September 27, 13

Page 29: South talk

DATA MIGRATIONSTOP SLICE:

schemamigration

Remove date_of_birth from Author

Remember: Data migration needs all information available.

Friday, September 27, 13

Page 30: South talk

MODEL INHERITANCE

Friday, September 27, 13

Page 31: South talk

MODEL INHERITANCE

Friday, September 27, 13

Page 32: South talk

MODEL INHERITANCE

Friday, September 27, 13

Page 33: South talk

MODEL INHERITANCE

Friday, September 27, 13

Page 34: South talk

WACKY STUFF

Friday, September 27, 13

Page 35: South talk

TESTING

Friday, September 27, 13