The initdb command


The initdb command is one of Lino's utilities for providing application-specific demo data. It performs an initialization of the database, replacing all data by default data loaded from the specified fixtures.

This command removes all existing tables from the database (not only Django tables), then runs Django's :manage: migrate to create all tables, and finally runs Django's loaddata command to load the specified fixtures.

For example the command

$ python initdb std demo demo2

is functionally equivalent to the following plain Django commands:

$ python flush
$ python migrate
$ python loaddata std demo demo2

The main difference is that initdb doesn't ask you to type "yes" followed by RETURN in order to confirm that you really want it. Yes, removing all tables may sound dangerous, but it is actually what we want quite often: when we just want to quickly try this application, or when we are developing a prototype and made some changes to the database structure. We assume that nobody will ever let a Lino application and some other application share the same database.

See also the pm prep command and Demo fixtures.