如何将使用中的数据库复制到django中的其他数据库?

时间:2011-08-09 20:00:46

标签: database django data-migration

我使用sqlite3开发了一个简单的django应用程序。事实上,我想使用sqlite3保持简单,但是,事情开始扩大(是的,我实际上开始使用sqlite3的应用程序!对我感到羞耻......)所以我想将我的所有数据迁移到postgresql数据库。

django或其他第三方是否提供此类功能,或者我应该为自己的愚蠢而受苦......

4 个答案:

答案 0 :(得分:29)

首先,执行

manage.py dumpdata > out.json

然后更改您的数据库配置,迁移(或syncdb),最后

echo "delete from auth_permission; delete from django_content_type;" | python manage.py dbshell

(如果您的Django大于1.11,则需要使用

echo "delete from django_content_type;" | manage.py dbshell

然后加载JSON文件:

manage.py loaddata out.json

(截至2013年django_contenttype已替换为django_content_type

答案 1 :(得分:3)

我正在努力做同样的事情,但我遇到的问题是解决依赖关系与ticket 16317基本相同。但对我来说足够......

对此进行故障排除导致我找到django-smuggler的链接,该链接允许您从管理界面创建转储和加载数据。

对于所需的任何数据传输或用作备份实用程序,它看起来很有希望。

答案 2 :(得分:0)

如果在加载数据时遇到错误,请首先像这样转储它:

python manage.py dumpdata --exclude auth.permission --exclude contenttypes > datadump.json

如此处所述:

http://www.denzow.me/entry/2017/09/06/223517

答案 3 :(得分:0)

我遇到了同样的情况,由于关键约束错误,无法将数据加载到新的 postgresql 数据库中。对我有用的是将我的“默认”sqlite 数据库重命名为“sqlite”,将我的 postgresql 数据库连接添加为“默认”,像这样导出数据:

python manage.py dumpdata --database sqlite --natural-foreign --natural-primary > sqlite-dump.json

然后像这样将数据加载到新数据库中:

python manage.py loaddata sqlite-dump.json

(这是 Django 2.2。)