heroku SQL Webアプリケーション

Herokuのデータベースにスクレイピングした情報を保存する

この記事は約5分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です!

 

今回はherokuのデータベースにPythonで収集した情報を保存する手順を紹介したいと思います。

 

herokuの基本的なことについては以下の記事に記載しておりますので、まずそちらを参考としてください!

 

関連記事:Python製プログラムを「Heroku scheduler」を使って無料で定期実行する

 

Herokuにポスグレを追加する

 

# herokuにログインする
$ heroku login

 

# プロジェクトに接続
$ heroku git:remote -a (プロジェクト名)

 

 

Heroku で PostgreSQL を使うために、アドオンを追加します。

$ heroku addons:add heroku-postgresql

 

アドオンを追加したらデータベースを作成します。

#データベースを作成
$ heroku addons:create heroku-postgresql:hobby-dev

 

 

ここで出てくるhobby-devとはherokuのプラン名でこれを指定することで無料でDBを作成できます。ただし1万行までしか書き込みができないみたいです。

 

しかもこれはアプリ単体ではなくアカウント全体の話みたいです。これはちょっと痛いですね・・・とりあえず1万行超えたときの無難な対応は有料プランに移行する、というところみたいです。

 

参考:PostgreSQL のプランを Free から Hobby に移行する(Heroku) – ブログ

 

他にもアプリの仕様として会員情報を保存するようなものでなければ、都度別の場所にバックアップを取ったりcsvに吐き出しておくなどして無料プランでやりくりすることもできそうです。

 

参考:Heroku postgresqlアドオンの無料プランで制限に達したとき | ikapblog

参考:herokuのデータベースをリセット/リストア/再構築する – Qiita

参考:MetabaseをHerokuで使って、10000行を超えて無料の限界が来たときの対処法 | Be full stack

 

DB情報を見る

 

下記のコマンドでHerokuのDB情報を見ることができます。

$ heroku pg:info

 

<実行結果>

 

データベースのURLを確認する

 

heroku上のデータベースのURLを確認する

$ heroku run python
>>> a = os.environ.get('DATABASE_URL')
>>> print(a)
postgres://~

 

このURLは次で使用するのでコピペしてどこかにメモっておきましょう。

 

Pythonでスクレピングした情報をherokuのデータベースに書き込む

 

<main.py>

# ライブラリの読み込み
import requests 
import json 
from sqlalchemy import create_engine
from datetime import datetime
import pandas as pd

# データベースへ接続(自身のサーバーのデータベースのURLを入力してください) 

engine = create_engine('postgresql://~', echo = False)

# 取得したデータをデータフレームにする

for i in range(10):

    data_list.append([f"first_{i}",f"last_{i}", i])

df = pd.DataFrame(data_list,columns=['first_name','last_name','age'])

# テーブルに書き込む 

df.to_sql('data_list', con = engine, if_exists='append') 

# データベースの中身を確認する(デバック用)

print(engine.execute('SELECT * FROM data_list').fetchall())

 

<reqirement.txt>

pandas==1.2.0
requests==2.25.1
numpy==1.19.4
sqlalchemy==1.4.12

 

<runtime.txt>

python-3.7.10

 

<Procile>

web: python main.py

 

これをherokuにデプロイしてコードが動くかを確認します。

 

# herokuにコードをデプロイする
$ git add .
$ git commit
$ git push heroku master

 

# heroku上のPyファイルを実行する
$ heroku run python main.py

 

エラーなく↓みたいな取得した情報がコンソール上にプリントされれば成功です。

[['first_0','last_0',0]~~~]

 

定期的に実行する場合は以下の記事を参考にしてください!

関連記事:Python製プログラムを「Heroku scheduler」を使って無料で定期実行する

 

 

ご質問などございましたらmentaにて受け付けております!

では~

 

 

関連記事:【Python】Heroku+Flaskでサーバレスアプリをデプロイする

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】Herokuのデータベースにスクレイピングしたデータを保存する […]

タイトルとURLをコピーしました