首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么?

Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么?
EN

Stack Overflow用户
提问于 2010-08-13 12:06:26
回答 7查看 28.5K关注 0票数 32

我需要将一个复杂的项目从sqlite迁移到PostgreSQL。很多人似乎对外键、数据截断等有问题.

  • 有一个完全自动化的实用程序吗?
  • 在迁移之前,我需要检查一些数据或模式吗?

编辑:我尝试了django-命令扩展 DumpScript,但是它没有在我的2GB内存PC上用我当前的DataSet运行。

EN

回答 7

Stack Overflow用户

发布于 2014-12-08 14:02:58

根据我的经验,从SQL转储和还原不能正常工作。

您应该遵循以下顺序:

1.将db内容转储到json

代码语言:javascript
运行
复制
$ ./manage.py dumpdata > dump.json

2.在settings.py中切换后端

代码语言:javascript
运行
复制
DATABASES = {
    # COMMENT OUT:
    # 'default': dj_database_url.config(default='sqlite:////full/path/to/your/database/file.sqlite'),
    # ADD THIS INSTEAD:
    'default': dj_database_url.config(default='postgres://localhost:5432/postgres_db_name'),
}

3. Syncdb并将新数据库迁移到相同的表结构

代码语言:javascript
运行
复制
$ ./manage.py syncdb
$ ./manage.py migrate

4.将json加载到新的db.

代码语言:javascript
运行
复制
$ ./manage.py loaddata dump.json

5.恭喜!现在,新的数据在postgres db.中。

票数 38
EN

Stack Overflow用户

发布于 2017-05-12 12:36:59

以下是对Django 尼莫的回答斯蒂芬的回答 1.7+的改进:

  1. ./manage.py dumpdata --natural-primary --natural-foreign > dump.json
  2. settings.py中的settings.py更改为指向新的(PostgreSQL) db。
  3. ./manage.py migrate
  4. ./manage.py loaddata dump.json

我遇到的一个问题是,SQLite似乎并没有为CharField执行最大长度。在我的例子中,这使得loaddata步骤失败。我能够通过以下方法找到(和删除)具有过长CharField值的模型实例:

代码语言:javascript
运行
复制
MyModel.objects.extra(where=["LENGTH(text) > 20"]).delete()

一旦我在上面的第一步之前做了这件事,一切都成功了。

票数 23
EN

Stack Overflow用户

发布于 2010-08-13 13:08:10

我从来没有做过,但我要尝试的是。

  1. 停止运行服务器
  2. python
  3. 更改settings.py以指向新创建的postgres数据库
  4. python负载数据
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3476606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档