Django学習日記vol.02

システム開発 学習記録

前回に引き続き、Djangoの学習日記を発信していきます。

今回は

  1. DBの作成
  2. DBとCSVの連携
  3. DB上のデータを定義内で活用

を学びました。

DBの作成

まずDBの作成です。

DBの作成の流れは

  1. models.pyに作成したい設定を記述
  2. 「python manage.py makemigrations」を実行
  3. 「python manage.py migrate」を実行

です。

model.pyに記載する情報は「項目」と「項目の種類」になります(名称があってない可能性は高いです)。

今回は

  • カテゴリ
  • ツイートデータ
  • ツイート数
  • 作成日
  • 更新日

の5つです。

今回は「文字情報」「文章情報」「数値情報」「日時情報」の4つの情報を5この項目で設定しています。

また、main_categoryは選択できるようにタプルで定義しました(実際のカテゴリは諸事情で非公開にさせてください)。

これで設定は完了です。

ここから「python manage.py makemigrations」→「python manage.py migrate」の順で実行しDB作成は終了になります。

DBとCSVの連携

次にDBとCSVの連携です。

  1. forms.pyにファイルアップロード用のフォームを作成
  2. views.pyにフォーム表示用の定義を作成
  3. urls.pyにフォーム用ページの設定を記載
  4. templatesフォルダ内にフォーム用テンプレートを記載

中身に関しては例のごとく「Google先生」で見つけた情報をコピペなので記載は遠慮させていただきます…

※使えそうな情報を見つけるために20記事ぐらい読み漁りました

DB上のデータを定義内で活用

最後はDB上のデータを定義内で活用する方法です。

  1. views.pyにmodels.pyのDB情報をimportする
  2. DB情報をDataframeに格納
  3. 定義内で活用後に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」をメンターつけずに学習しています(笑)

もう今まで身につけた知識が役に立たないので四苦八苦過ぎます(笑)