DjangoでDB接続する時はdbshellを使おう

DjangoにはDB接続周りの処理をラッピングしてくれるdbshellというコマンドがあります。

https://docs.djangoproject.com/en/5.0/ref/django-admin/#dbshell

使い方

python manage.py dbshell

とするとDBへ接続して対話シェルを開いた状態へ。

python manage.py dbshell 'select * from django_migrations'

のようにすると、SQLを実行して接続してくれます。

上記はSQLite3での例なので引数は不要でしたが、MySQLPostgreSQLでは以下ページに記載があるように -- 引数を付与することで -e-cなどのオプションを付与することができます。

https://docs.djangoproject.com/en/5.0/ref/django-admin/#cmdoption-dbshell-0

メリット

MySQL, PostgreSQL, SQLite3といったDBを意識せず、このコマンドでDB接続周りの処理を実施することができます。

自分はこのコマンドに気が付かず、例えばSQLite3なら

sqlite3 mysite/db.sqlite3

select * from django_migrations;

のようにコマンドを入力していました。そしてSQLite3以外のDBを利用するときには、それ以外の接続方法を調べて実行していたので、非常に楽になりました(先輩に教えてもらいました)。

dbshellを利用することで、DB接続も簡単に、かつ他のDBを利用する機会でも流用できるのでオススメです。