[Django]shellからではなくスクリプトからデータベースを操作する
Djangoではmanage.py shellからデータベースを操作できます。
でもshellからではなく、スクリプトを書いてデータベースを操作したいと思った時の資料が多くなかったので備忘録を兼ねてメモ。
背景
やりたかったこと
スクレイピングで取得した情報をDjangoのデータベースに登録→Djangoアプリケーションで表示させる
つまづいたこと
PythonでSQLite3を操作するスクリプトを書きましたが、なんだかDjangoのデータベースにうまく接続できない。
Djangoのチュートリアルではshellを使って簡単にデータベースを操作できたのになぁ
コード紹介
Django本体のコードはDjangogilrsチュートリアルをベースにしています。
今回はmanage.pyがある同じ階層に以下のコードを書きました。
import sys import os import django sys.path.append("mysite") os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings") django.setup() from blog.models import Post print('connect ok') Post.objects.create(title='Sample title', url='Test')
from blog.models import PostをDjango.setup()の下に書いていますが、1番上のimport群に書くとエラーが返ってきます。
あとはチュートリアルにあるようにshellコマンドで入力したものをそのまま書くだけでCRUD操作ができます。