マイグレーションファイルはどこに作成される?

マイグレーションファイルは、Djangoアプリケーションのmigrationsフォルダに作成されます。例えば、アプリケーション名がyour_django_appであれば、your_django_app/migrations/フォルダにマイグレーションファイルが作成されます。

具体的な手順と確認方法を以下に示します。

手順 1: モデルの更新

前述の通り、RakutenPriceResultモデルにbreak_even_pointフィールドを追加します。

手順 2: マイグレーションの作成

以下のコマンドを実行してマイグレーションファイルを作成します。

bash
python manage.py makemigrations your_django_app

このコマンドを実行すると、your_django_app/migrations/フォルダに新しいマイグレーションファイルが作成されます。このファイルの名前は通常、000X_auto_YYYYMMDD_HHMM.pyのような形式になります。

手順 3: マイグレーションファイルの確認

作成されたマイグレーションファイルは以下のように確認できます。

bash
ls your_django_app/migrations/

例えば、以下のような出力が得られるかもしれません。

bash
0001_initial.py 0002_auto_20240623_1400.py __init__.py

0002_auto_20240623_1400.pyというマイグレーションファイルが新たに作成されたとします。

手順 4: マイグレーションの適用

以下のコマンドを実行してマイグレーションをデータベースに適用します。

bash
python manage.py migrate your_django_app

このコマンドにより、新しいフィールドがデータベースに追加されます。

手順 5: データの更新

前述の修正済み関数を使ってデータを更新します。

python
import pandas as pd from your_django_app.models import RakutenPriceResult def add_break_even_point(): # 損益が0円を登録(それをベースにして、赤字、黒字の計算に使う) import_data = list(RakutenPriceResult.objects.values_list('original_product_code', 'cost_price', "yen_low_own_price")) # DataFrameを作成 df = pd.DataFrame(import_data, columns=['original_product_code', 'cost_price', "yen_low_own_price"]) shipping = 500 # 送料 sizai = 50 # 梱包資材 zinkenhi = 0 # 商品別人件費 mall_fee_rate = 0.09 # モール手数料率 # 利益を計算する関数を定義 def calculate_profit(row): revenue = row['yen_low_own_price'] cost = row['cost_price'] profit = revenue - cost - (revenue * mall_fee_rate) - shipping - sizai - zinkenhi return profit # 各行の利益を計算して新しい列に追加 df['break_even_point'] = df.apply(calculate_profit, axis=1) # データベースに更新 for index, row in df.iterrows(): RakutenPriceResult.objects.filter(original_product_code=row['original_product_code']).update(break_even_point=row['break_even_point']) # 結果を表示 profit_above_one = df[df['break_even_point'] > 1] profit_zero_or_below = df[df['break_even_point'] <= 0] print("利益が1円以上の行:") print(profit_above_one) print("n利益が0円以下の行:") print(profit_zero_or_below) # 関数の実行 add_break_even_point()

まとめ

  1. モデルに新しいフィールドを追加します。
  2. python manage.py makemigrationsを実行してマイグレーションファイルを作成します。
  3. your_django_app/migrations/フォルダにマイグレーションファイルが作成されたことを確認します。
  4. python manage.py migrateを実行してマイグレーションを適用します。
  5. データを更新する関数を実行します。

未分類

Posted by ぼっち