Django DB에 CSV 파일 넣기
아래의 방법을 이용하여 CSV 파일을 Django의 DB(여기서는 mysql)에 넣을 수 있음
아래의 내용은 장고의 manage.py가 있는 위치에 만들어주기
(파일을 만들고 실행하면 DB에 데이터가 추가됨)
import csv
import os
import django
import sys
os.chdir(".")
print("Current dir=", end=""), print(os.getcwd())
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print("BASE_DIR=", end=""), print(BASE_DIR)
sys.path.append(BASE_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings") # 1. 여기서 프로젝트명.settings입력
django.setup()
# 위의 과정까지가 python manage.py shell을 키는 것과 비슷한 효과
from car.models import * # 2. App이름.models
CSV_PATH = './model.csv' # 3. csv 파일 경로
with open(CSV_PATH, newline='') as csvfile: # 4. newline =''
data_reader = csv.DictReader(csvfile)
for row in data_reader:
print(row)
Model.objects.create( # 5. class명.objects.create
name = row['model']
# 6
)
1) "projet1.settings" 부분에 프로젝트명.settings 입력
여기서는 project명이 project1이었기 때문에 위와 같이 입력한 것
2) App이름.models
여기서는 car App의 모델을 이용할 것이기 때문에 위와 같이 입력
3) CSV 파일의 경로 입력
CSV가 담겨있는 폴더가 manage.py가 있는 곳과 같은 경우 위와 같이 입력
4) newline =''
csv는 ,를 기준으로 데이터를 나눔
line을 나누는 기준을 정해주어야함 위의 명령어를 사용하면 ' ' (공백)이 있을 시 새로운 줄로 인식한다는 뜻
5) class명.objects,create
6) name = row['model']
여기서 name은 내 Model class에 입력된 데이터 이름
row['model']은 내 CSV에 입력된 데이터베이스의 이름
예시 )
class Model(models.Model):
name = models.CharField(max_length = 50)
class Meta:
db_table = 'models'
위 이미지의 model이라고 써있는 부분을 class Model의 table(models)에 name으로 입력한다는 뜻
Foreign Key를 가지는 데이터는 원본 데이터가 먼저 데이터베이스에 등록되어야함!
CSV_PATH = './CSV/modelversionline.csv'
with open(CSV_PATH, newline='') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
print(row)
ModelVersionLine.objects.create(
model = Model.objects.get(id=row['model_id']),
version = Version.objects.get(id=row['version_id']),
line = Line.objects.get(id=row['line_id']),
spec = Spec.objects.get(id=row['spec_id']),
dimension = Dimension.objects.get(id=row['dimension_id'])
)
이런식으로 데이터 가져와서 연결하기
장고에서 mysql 서버가 꺼져있을 때 서버는 위와 같은 명령어로 킬 수 있음
아래의 명령어들을 이용하여 mysql에 있는 데이터들을 확인 할 수 있음
위의 명령어로 mysql의 root로 들어갈 수 있음
들어갈 때 설정했던 비밀번호 입력하면 들어가짐
; 빼지 말고 써야함
위의 명령어를 이용하여 database를 볼 수 있음
나의 경우에는 아래와 같이 나옴
여기서 내가 사용하려 하는 데이터베이스를 열기 위해서 아래의 명령어 이용
여기서는 DB명이 project_1st임
따라서 아래와 같이 입력함
이 명령어를 입력하면 Database changed 라는 글이 나타남
이 말이 나오면 Database가 바뀐 것
이 Database의 테이블들을 보고싶으면
아래의 명령어 사용하기
테이블 내의 데이터를 보기 위해서는 아래와 같이 사용
위의 table중 models의 table을 보고 싶으면 아래와 같이 사용하기
위와 같이 사용하면 아래의 사진과 같이 나타남
테이블 내용을 삭제하기
만약 위의 models 테이블의 데이터를 삭제하고 싶으면 아래와 같이 입력
만약 삭제하려는 테이블의 데이터를 참조하는 다른 테이블이 있다면 (다른 테이블의 Foreign Key가 삭제하려는 테이블의 데이터인 경우) 데이터가 삭제안됨
그러한 경우 아래의 명령어 이용
위의 명령어는 연결되어있는 foreign key를 끄는 방법
위의 명령어로 FK를 껐으면 데이터를 삭제할 수 있음
데이터 삭제는 위의 truncate table table명;을 입력하면 진행됨
위의 명령어는 다시 FK 연결하도록 함
데이터베이스 자체를 삭제하는 방법
여기서는 db명이 project_1st이므로
위와 같이 DB자체를 삭제한 경우 DB를 다시 만들어줘야함
모든 내용이 아니라 테이블 row 보는 것