Django学習日記vol.02
前回に引き続き、Djangoの学習日記を発信していきます。
今回は
- DBの作成
- DBとCSVの連携
- DB上のデータを定義内で活用
を学びました。
DBの作成
まずDBの作成です。
DBの作成の流れは
- models.pyに作成したい設定を記述
- 「python manage.py makemigrations」を実行
- 「python manage.py migrate」を実行
です。
model.pyに記載する情報は「項目」と「項目の種類」になります(名称があってない可能性は高いです)。
今回は
- カテゴリ
- ツイートデータ
- ツイート数
- 作成日
- 更新日
の5つです。
今回は「文字情報」「文章情報」「数値情報」「日時情報」の4つの情報を5この項目で設定しています。
また、main_categoryは選択できるようにタプルで定義しました(実際のカテゴリは諸事情で非公開にさせてください)。
これで設定は完了です。
ここから「python manage.py makemigrations」→「python manage.py migrate」の順で実行しDB作成は終了になります。
DBとCSVの連携
次にDBとCSVの連携です。
- forms.pyにファイルアップロード用のフォームを作成
- views.pyにフォーム表示用の定義を作成
- urls.pyにフォーム用ページの設定を記載
- templatesフォルダ内にフォーム用テンプレートを記載
中身に関しては例のごとく「Google先生」で見つけた情報をコピペなので記載は遠慮させていただきます…
※使えそうな情報を見つけるために20記事ぐらい読み漁りました
DB上のデータを定義内で活用
最後はDB上のデータを定義内で活用する方法です。
- views.pyにmodels.pyのDB情報をimportする
- DB情報をDataframeに格納
- 定義内で活用後にDB情報を更新
views.pyにmodels.pyのDB情報をimportする
DB情報のimportに関してはこのように記載すれば終わりです。
DB情報をDataframeに格納
次にDB上の情報をDataframeに格納するのですが、これは他のやり方でも良いと思います。
ただ、僕はpandasの本を買ったのでただ使ってみたかっただけです(笑)
ちなみに詳細に関しては理解していないです…
とりあえず作りたいものさえ作れれば今はいいので(笑)
定義内で活用後にDB情報を更新
最後にDB情報を更新するのですが、なぜかアップロードしたCSVデータが「ID」と「index」の両方が存在し、どちらを使えばいいのかを確認しながら作業した結果、この部分で3日かかりました…
やり方は、DBをインスタンス化し、そのインスタンスを更新したい情報に変更後、「save()」を実施します(インスタンスって言葉はこの学習で初めて知りました)。
まとめ
とりあえず、学んだことの紹介は以上になります。
これらの方法とTweepy(Twitter API)を使ってTwitter用のボット作成を行ってました。
Twitter APIって本当に色んなことができるので、また今度そっちの学習記録か、去年に開発した指定した競合のツイートを分析するシステムの解説もしようかなと思います。
ここからボット以外にも3個の機能を盛り込んだアプリケーションを作る予定なので、またまとまった時間作って開発は進めていこうと思います。
備考
本当にメンターをつけずに新しいことをやろうとする癖を辞めたいのですが、できあがったときの達成感(いつも3秒ほどしか実感しませんが)と優越感(一生自慢してます)が理由で辞めれません。
ただ、本当にこのやり方はオススメしないので、ぜひあなたは何か始める際はメンターを必ず見つけるようにしましょう。
ちなみに僕は今「AWS」をメンターつけずに学習しています(笑)
もう今まで身につけた知識が役に立たないので四苦八苦過ぎます(笑)