如何将 Django 模型从 mysql 迁移到 sqlite(或任意两个数据库系统之间)?

发布于 2024-10-09 13:35:43 字数 364 浏览 4 评论 0原文

我在生产环境中有一个使用 MySQL 的 Django 部署。

我想使用 SQLite 进行进一步的开发,因此我想将现有数据导入到 SQLite 数据库中。我

有一个 shell 脚本 此处 将常规 MySQL 转储转换为 SQLite,但它对我不起作用(显然一般问题并不容易)。

我认为使用 Django 模型来做这件事一定要容易得多。你会怎么做?有人有任何脚本可以做到这一点吗?

I have a Django deployment in production that uses MySQL.

I would like to do further development with SQLite, so I would like to import my existing data to an SQLite database. I

There is a shell script here to convert a general MySQL dump to SQLite, but it didn't work for me (apparently the general problem isn't easy).

I figured doing this using the Django models must be much easier. How would you do this? Does anyone have any script to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

弄潮 2024-10-16 13:35:43

用于

manage.py dumpdata > your_file.json

从生产系统导出数据(docs< /a>)。

然后将文件移动到开发系统上并运行

manage.py loaddata your_file.json

您也可以将文件放在 your_app/fixtures 文件夹中,名称为“initial_data.json”,运行“manage.pysyncdb”时会自动加载该文件(文档)。

use

manage.py dumpdata > your_file.json

to export your data from the production system (docs).

Then move the file on the development system and run

manage.py loaddata your_file.json

You can also put the file in your_app/fixtures folder with name "initial_data.json" and it will be automatically loaded when you run "manage.py syncdb" (docs).

甜扑 2024-10-16 13:35:43

您是否尝试过使用 manage.py dumpdata > datadump 然后当新数据库正确设置后,使用 python manage.py loaddata datadump?

Have you tried using manage.py dumpdata > datadump and then when the new database is set up correctly, use python manage.py loaddata datadump?

妄想挽回 2024-10-16 13:35:43

如果您在安装的应用程序中有内容类型,

INSTALLED_APPS = (
    'django.contrib.contenttypes',
)

请使用类似于将条目复制到新库的脚本:

from django.contrib.contenttypes.models import ContentType

    def run():

        def do(Table):
            if Table is not None:
                table_objects = Table.objects.all()
                for i in table_objects:
                    i.save(using='slave')

        ContentType.objects.using('slave').all().delete()

        for i in ContentType.objects.all():
            do(i.model_class())

请参阅完整手册此处

If you have contenttypes in installed app

INSTALLED_APPS = (
    'django.contrib.contenttypes',
)

Use script like what for copying you entry to new base:

from django.contrib.contenttypes.models import ContentType

    def run():

        def do(Table):
            if Table is not None:
                table_objects = Table.objects.all()
                for i in table_objects:
                    i.save(using='slave')

        ContentType.objects.using('slave').all().delete()

        for i in ContentType.objects.all():
            do(i.model_class())

See full manual here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文