[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