TIL77. Wetcha Pedia Project:CSVとアップロードプログラム.pyを使用してデータを管理する


📌 このパブリケーションでは、Wetcha Pediaクローンプロジェクトのデータを管理するCSVファイルとアップロードプログラムが提供されます.pyの使い方をまとめました.

🌈 CSVとアップロードプログラム。pyを使用してデータを管理する


🔥 CSVデータとは?


🔥 uploader.pyを使用してCSVファイルDjangoで処理


1.CSVデータとは?


🤔 なぜComma Seperated Valueを使うのですか?


✔CSVとは、データがカンマ単位で項目を区切って格納されているデータのことです.これは私たちが知っているExcelのような形式のファイルです.CSVはカンマで区切られているので、Excelのようなプログラムで読み取ることも、生成することもできます.
主に、表形式のデータまたはテキスト形式のデータを格納するために使用されます.
✔CSVファイルはデータが小さく、複数のアプリケーションで使用できるなどの利点があり、同じデータを格納する場合、JSONデータより半分少ない容量で使用する.
✔¥АААААААААААААこれは、データにカンマがある場合、そのカンマを次の列として認識し、他の記号で置き換えることができるからです.これにより、区切り記号を指定できます.

🤔 CSVファイルの作成方法


✔CSVファイルは、手帳、vcode、Excel、numbersなど任意の場所で空のファイルを開き、カンマで区切られたデータを入力します.csv拡張子で保存すればいいです.
✔¥作る際に注意したいのが、カンマの間に不要なスペースを作らないことです.
name,password,email,sex,location
testuser1,1q2w3e4r!,test1@gmail.com,male,seoul
testuser2,1q2w3e4r!,test2@gmail.com,female,jeju
testuser3,1q2w3e4r!,test3@gmail.com,male,busan
testuser4,1q2w3e4r!,test4@gmail.com,female,seoul
testuser5,1q2w3e4r!,test5@gmail.com,female,incheon
✔¥上のcsvファイルは実は下の表と同じです.カンマでセルを区別できるからです.

2. uploader.pyを使用してCSVファイルDjangoで処理


🤔 Djangoでcsvファイルを処理する方法


✔¥環境変数にDjangoを設定した後、django.setupを呼び出します.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
✔¥表は模型です.pyからインポートしたら、csvファイルを開いてcsvファイルを読み込む準備をします.
10004 csvファイルに最初の行の列名が存在するため、next関数を使用して最初の行を無視します.
✔▼▼csvのデータをフィールド値にマッピングし、オブジェクトを作成します.
✔入力したフィールドが別のテーブルのid値を参照している場合は、「フィールド名id」をフィールド値として使用します.
import os # 👈 os import
import django # 👈 django import
import csv # 👈 csv import
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
django.setup()
from users.models import User
from movies.models import *
CSV_PATH_USERS = "csv/users.csv"
CSV_PATH_GRADES = "csv/grades.csv"
CSV_PATH_MOVIES = "csv/movies.csv"
with open(CSV_PATH_USERS) as in_file:
    data_reader = csv.reader(in_file)
    next(data_reader, None)
    for row in data_reader:
        User.objects.create(name=row[0], password=row[1], email=row[2], profile_image_url=row[3])
with open(CSV_PATH_GRADES) as in_file:
    data_reader = csv.reader(in_file)
    next(data_reader, None)
    for row in data_reader:
        Grade.objects.create(name=row[0])
with open(CSV_PATH_MOVIES) as in_file:
    data_reader = csv.reader(in_file)
    next(data_reader, None)
    for row in data_reader:
        Movie.objects.create(
            title=row[0],
            poster_image_url=row[1],
            country=row[2],
            description=row[3],
            running_time_in_minute=row[4],
            released_at=row[5],
            grade_id=row[6],
        )