djangoフレームワークでデータベースのバックアップにdjango-dbbackupを使う人は多いと思いますが、Djangoバージョン4などの比較的新しいバージョンにdjango-dbbackupやbotoをインストールした場合、そのままでは動かない可能性が高いので解決法を書き残しておきます。
# 前提条件
人によって異なるとは思いますが、この記事を書いた現在の環境
- ・ python 3.10.4
- ・ Django 4.0.4
- ・ django-dbbackup 3.3.0
- ・ django-storages 1.12.3
- ・ boto3 1.23.9
- ・ celery 5.2.6
# apps.pyのugettext_lazyをgettext_lazyにする
まず最初に詰まったのは
でした。これはコチラの記事がそのまま当てはまったので参考にしました。
\Lib\site-packages\dbbackup\apps.pyの先頭のimport文を書き換えるだけ。
最初のエラーはひとまずこれで解決しました。
# boto3をインストールする
次に出たエラーは次のものでした。
# botoではダメだ
botoは入れたはずなので調べてみると
インストールされているけど、エラーログをよく見ると
さらにこちらのサイトを見てみると、どうやらbotoではなくboto3というのが必要なようだ。最初に参考にしたサイトが古かったみたいです。
しかしpip install boto3
とやってもモジュールが見つからないと言われる。この解決法は簡単でpip3 install boto3
でようやくインストールされた。
# settings.pyを書き換える
下記のように書き換えればOK。
これで実行してみたところ
AWS S3側にもしっかり保存されていました。celeryによる定期バックアップはまだ試してませんが、ひとまずここまでを書き残しておきます。djangoで初めてDBのバックアップをする方は参考にしてみて下さい。