1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発をしていて、データベース設計を行なっていたときに、都道府県や市区町村データを予めDBに突っ込んでおきたいなあという場面があった。

Railsだと、初期データを予め突っ込んでおくseedという機能がデフォルトで用意されている。

しかし、Flaskにはいろいろ調べたのですがなかなか良さげなものが見つからず。なんでや!

ということで、すでに作成したDBに対して初期データを突っ込んでおくシェルスクリプトを書きました。

import_data.sh
db_file="instance/sharejog.sqlite"

pref_csv_file="flask_app/data/prefectures.csv"
pref_table_name="data_models_prefectures"

city_csv_file="flask_app/data/cities.csv"
city_table_name="data_models_cities"

facility_csv_file="flask_app/data/facilities.csv"
facility_table_name="data_models_facilities"

sqlite3 $db_file <<EOF
.mode csv
.import $pref_csv_file $pref_table_name
.import $city_csv_file $city_table_name
.import $facility_csv_file $facility_table_name
.quit
EOF

気をつけなくてはならないこととして、当然ではありますが、csvの構成とDBのスキーマ構成との間にきちんと整合性をとる必要がある。(そうしないときちんと格納できないよね)

テーブル作成まで完了したら、Flaskアプリケーションを起動する前にこれを実行すれば良い。具体的には、

flask db init && flask db migrate && flask db upgrade && chmod +x import_data.sh && ./import_data.sh && gunicorn -b 0.0.0.0:$PORT flask_app.app:app

をRender.comのStart Commandに設定すればOK。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?