【新手】如何在Django中使用utf-8格式进行数据库数据的转储(备份)

首先

在前不久的一次Django项目中,当备份数据库数据时,日本语的数据出现乱码。本文介绍了备份时采用UTF-8格式的方法。

环境

我已在以下环境中验证了操作。
Python版本为3.7.1,
Django版本为3.2.16。

在Django中执行导出命令

Django将数据以utf-8格式转存的命令如下。
请在Django应用的manage.py所在目录中执行。

$ python -Xutf8 manage.py dumpdata [アプリ名[.モデル名]] > [出力先] 
    • -Xutf8:データをutf8形式で出力するオプション。

 

    • [アプリ名[.モデル名]]:アプリ名のみを指定した場合は全てのモデルのデータを出力します。アプリ名.モデル名と指定した場合は該当のモデルのデータのみを出力します。

 

    [出力先]:dumpファイルの出力先になります。一般的には[アプリ名]/fixtures/ [ファイル名]を指定することが多いです。

实例

将书籍管理应用程序(图书应用)中的图书类别模型数据进行备份。

class Category(models.Model):
    """書籍カテゴリモデル"""
    name = models.CharField(verbose_name='カテゴリ名', max_length=50)
    class Meta:
        verbose_name_plural='Category'

    def __str__(self):
        return self.name

在终端上执行以下命令。

$ python -Xutf8 manage.py dumpdata books.Category > books/fixtures/category.json

成功生成了转储文件,并且日语也没有乱码。

[
	{
		"model":	"books.category",
		"pk":	"1",
		"fields":	{"name": "文学・評論"}
	}	,
	{
		"model":	"books.category",
		"pk":	"2",
		"fields":	{"name": "人文・思想"}
	}	,
	{
        ・・・以下略
	}]

请参考以下网站

    • 公式ドキュメント

 

    stack overflow

结束

在Django中无需依赖RDMS即可进行dump非常方便!

bannerAds