[melbourne-pug] Django: Best practice for importing data

Mike Dewhirst miked at dewhirst.com.au
Tue Aug 9 01:04:34 EDT 2016


Thanks Ben

That confirms it for me. I'll go with migrations.

Mike

On 9/08/2016 2:50 PM, Ben Finney wrote:
> Mike Dewhirst <miked at dewhirst.com.au> writes:
>
>> Can I ask why you are using manage.py to import csv data instead of a
>> migration?
>
> There are different scenarios when each makes sense.
>
> * When the data import is conceptually a defining feature of the
>   database (e.g. a collection of status values), and should exist from
>   the first creation of the database, storing the data as a fixture is
>   the best way.
>
>   <URL:https://docs.djangoproject.com/en/1.10/howto/initial-data/>
>
>   Use an initial data fixture when your database is just starting, and
>   you know this data should exist in every new instance of the
>   application.
>
> * When the change in data is reflective of a change in the application
>   behaviour (e.g. the application was only offering Country and State,
>   but now needs to also offer City values), populating the new
>   information with a migration is the right: the data should be there
>   whenever the application behaviour aligns with that database state,
>   and should not be there otherwise.
>
>   <URL:https://docs.djangoproject.com/en/1.10/topics/migrations/#data-migrations>
>
>   Use a migration when the change in data is required for every instance
>   of the application which exists at that state of the program code.
>
> * When the change in data does not represent any specific change in
>   application behaviour (e.g. the application offered 135
>   manually-entered products for sale, and now the owner wants to import
>   another 6 000 additional products), a migration is too much hassle
>   because there's no implied different behaviour of the application.
>
>   <URL:https://docs.djangoproject.com/en/1.10/howto/custom-management-commands/>
>
>   For small data additions, that do not need to be applied in every
>   instance of the application, you could just use the application's user
>   interface – or the Admin – to create them. But if the amount is large,
>   a custom management command is best for automating it.
>
>> I ask because I'm just starting to think about an upcoming csv (xlsx
>> actually) import task of my own.
>
> I hope that helps.
>



More information about the melbourne-pug mailing list