0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初心者】Djangoでデータベースのデータをutf-8でdump(バックアップ)する方法

Last updated at Posted at 2023-05-01

はじめに

先日、Djangoプロジェクトにおいて、データベースのデータをdumpした際に日本語のデータが文字化けしてしまいました。
本記事ではその時に実施したutf-8形式でdumpする方法を紹介します。

環境

以下の環境で動作を確認しています。
python version 3.7.1
Django version 3.2.16

Djangoでdumpするコマンド

Djangoでutf-8形式にdumpするコマンドは以下です。
Djangoアプリのmanage.pyがある階層で実行します。

$ python -Xutf8 manage.py dumpdata [アプリ名[.モデル名]] > [出力先] 
  • -Xutf8:データをutf8形式で出力するオプション。
  • [アプリ名[.モデル名]]:アプリ名のみを指定した場合は全てのモデルのデータを出力します。アプリ名.モデル名と指定した場合は該当のモデルのデータのみを出力します。
  • [出力先]:dumpファイルの出力先になります。一般的には[アプリ名]/fixtures/ [ファイル名]を指定することが多いです。

実例

例として書籍管理アプリ(booksアプリ)における書籍カテゴリモデルのデータをdumpします。

model.py
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

dumpファイルが無事生成されました。日本語も文字化けしていません。

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

参考サイト

終わりに

RDMSに依存せずにDjangoでdumpできるのは非常に便利!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?