【问题标题】:Export Django model/classes to SQL statement将 Django 模型/类导出到 SQL 语句
【发布时间】:2017-01-17 21:34:32
【问题描述】:

我使用 Django 创建了一个 Web 应用程序。我对它不是很满意,并希望将我创建的整个 Django 模型导出/翻译为 SQL 语句。

我知道以下语句会打印 SQL 语句以对数据库进行增量更改:

python manage.py sqlmigrate polls 0001

但是如何将初始(整个)模型导出到 sql 文件中?

理论上,我可以直接从数据库中导出 SQL 转储。但是我的数据库变得杂乱无章(附加表),而我的models.py 是原始数据库的干净公式。

【问题讨论】:

  • 据我所知,自 Django 1.8 起,python manage.py sql 执行您想要的操作的命令已被弃用

标签: python django django-migrations


【解决方案1】:
  1. 将您的 migrations 文件夹重命名为 foo,这样 Django 就找不到它(如果你够勇敢的话,也可以完全删除它)
  2. 删除或重命名django_migrations
  3. python manage.py migrate --fake
  4. python manage.py makemigrations polls
  5. python manage.py sqlmigrate polls 0001

【讨论】:

  • 这似乎不起作用。在第一个命令之后,它说 No migrations to apply. Your models have changes that are not yet reflected in a migration, and so won't be applied. Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. 在第二个之后:CommandError: App 'mainapp' does not have migrations
  • @Ratnanil 我想我错过了一步。您可能需要重命名 django_migrations
  • 伪造迁移现在可以工作,但错误ComandError: App... 仍然出现。你知道为什么吗?
  • @Ratnanil 我猜如果您已经移动了迁移文件夹并重命名了数据库中的列,您可以像往常一样使用makemigrations 创建一个新的初始迁移,然后使用sqlmigrate 查看SQL 语句。让我知道这是否有效,我将编辑答案。不幸的是,我是凭记忆做的,因为我不在 django 驱动的机器上
  • 是的!在第 3 步之后插入 python manage.py makemigrations mainapp,然后插入 python manage.py sqlmigrate mainapp 0001。更新您的答案,我很乐意接受。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 2016-02-20
  • 1970-01-01
相关资源
最近更新 更多