Django obsługuje ładowanie plików SQL podczas wykonywania syncdb, reset, lub rozpoczęcie zawodnik testowy - ten robi dokładnie to, co można opisać:
http://docs.djangoproject.com/en/dev/howto/initial-data/#providing-initial-sql-data
Trzeba utworzyć katalog „sql” w swojej aplikacji katalogu, a następnie umieść plik o nazwie "mymodel.sql" w tym katalogu (gdzie "MyModel" jest odpowiednią nazwą modelu).
myproject/
|--myapp/
|--sql/
|--mymodel.sql
Możesz utworzyć ten SQL za pomocą narzędzi dump dla swojej bazy danych.
- SQLite [1]: echo ".dump" | sqlite3 yourdbname.sqlite> MojaApl/SQL/mymodel.sql
- MySQL [2]: mysqldump yourdbname> MojaApl/SQL/mymodel.sql
- PostgreSQL [3]: pg_dump yourdbname> MojaApl/SQL/mymodel.sql
Po zakończeniu dumpingu należy zmodyfikować plik, aby usunąć wszystkie elementy poza odpowiednimi instrukcjami INSERT lub innymi skomplikowanymi elementami. W szczególności należy usunąć obsługę transakcji, tworzenie indeksu i tworzenie tabeli SQL, aby uniknąć błędów podczas ładowania duplikatów instrukcji tworzenia.
Używam tej metody do ładowania naprawdę dużych urządzeń - przetwarzanie jsona trwa zbyt długo, ale prosty import sql jest bardzo łatwy.
Należy pamiętać, że ta metoda załaduje sql dla dowolnego wywołania synchdb, zresetowania itp. Oprócz ładowania danych dla biegacza testowego - w ten sposób nie będzie można mieć różnych danych dla różnych przypadków testowych i musisz usunąć pliki przed zresetowaniem, jeśli nie chcesz, aby zostały załadowane z powrotem na serwer produkcyjny.
[1] http://www.sqlite.org/sqlite.html
[2] http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
[3] http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP
Jeśli się nie mylę loading sql byłoby szybciej, ponieważ nie ma narzutu że terminarz wykonania. Szukam rozwiązania tego samego problemu. Mam duże DB do załadowania do testowania i chciałbym, aby ładowanie było szybkie. – Jeff
Używam szeroko relacji generycznych, co jest problemem podczas używania urządzeń. Wygląda na to, że zostało to właśnie rozwiązane w pracy nad 1.2, zobacz http://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys – knutin
To wstyd, że możesz głosować tylko na komentarze, a nie na dół. Ten pierwszy komentarz po prostu cuchnie. – boatcoder