Language/Python

Session-쉘과 sql, 파이썬 코드로 접근하기(shell , sql, python, django)

청렴결백한 만능 재주꾼 2020. 5. 19. 17:36
반응형

 

 

 

일단 sqlite3.db.sqlite3 으로 가서 데이터베이스를 뒤져본다.

여기서 ;이거를 안치면 계속 진행됨.

>>>.table

>>>select * from drink 

-> 드링크에 있는 것들을 떙겨오는것

>>>delete from categories;

-> 삭제 

 

쉘로 가서

>>>python manage.py shell   

치면 쉘로 이동함.

 

>>>from product.models import Category, Drink

 

>>>Category.objects.create(name='데이터 이름', 외부키_ID=1)

하면 데이터가 카테고리에 추가가 된다. 추가할 때 마다 자동으로 id가 생성됨.

 

>>>Category.objects.all()

-->치면 오브젝트 다 볼 수 있음.

그리고 더 자세히 보려면

>>>Category.objects.values()

-->하면 디테일하게 나옴.

 

 

 

 

 

 

 

*카테고리라는 객체들이 리스트 성질로 취급받을 수 있기 때문에 리스트에 쓸 수 있는 함수들을 쓸 수 있음.*

{

예를 들어

category_all=Category.objects_all()

을 하고 
category_all[0]

을 하면 0번째의 값이 튀어나옴

 

그리고 

cold = category_all[0]

한다음

cold.name

을 하면 0번째 값의 name이 튀어나옴.

 

category_values = Category.objects.values()

cold2 = category_values[0]

cold2.name 하면 안뜸. 

벨류했을 때는 딕셔너리 형태로 나오기 때문에 딕셔너리 키값을 넣어줘야함.

 

원하는 테이블의 id가 필요할 때 쓰는 방법

c = Category.objects.get(name='콜드 브루 커피')

c.id

하면 아이디가 튀어나옴.

}

 

 

 

 

그래서 콜드브루 커피 밑의 모든 커피들은 저거 c.id를 category_id=c.id 로 넣어주면 됨.

>>>Drink.objects.create(name='나이트로 바닐라 크림', menu_id=1, category_id=c.id)

>>>Drink.objects.create(name='제주 비자림 콜드 브루', menu_id=1, category_id=c.id)

두가지를 넣고 sql 에서 확인한 결과

{

위 그림에서 9, 10은

여기 테이블의 각자의 id이다.(나이트로 바닐라크림에 부여된 id, 제주 비자림 콜드 브루에 부여된 id)

 

뒤에 17은

콜드브루의 id. 

 

마지막 1은

큰 카테고리에서 음료부분 아이디이다.

 

큰카테고리 음료 음식 카드 등등인데 음료가 1번 아이디이고

음료 안에서 콜드브루가 17번의 아이디를 가지고 있는 것이다.

}

 

 

 

 

 

 

다시 아이디를 저장하는 방법으로

category_id = Category.objects.get(name='에스프레소').id

를 하고 

category_id 

를 하면 에스프레소의 아이디가 출력됨.

 

>>>Drink.objects.create(name='에스프레소 콘 파나', menu_id= menu_id, category_id = category_id)

 

Drink.objects.get(id=11)

아이디가 11번인애를 가져오는 것.

Drink.objects.get(id=11).name

하면 이름이 나옴

 

Drink.objects.filter(category_id=17).values()

하면 결과가 나옴. 가져온 것들을 디테일하게 딕셔너리로 보여줌.

Drink.objects.filter(category_id=17).values('name')

하면 name만 다 보여줌.

 

겟은 하나

필터는 여러개를 들고올 수 있음. 그래서 쿼리셋을 리턴받아옴. 그래서 리스트 성질 이용하여 인덱스한 후 .name이나 메소드 등을 쓰면 됨.

 

category_sample = Category.objects.get(name='에스프레소')

한 다음

Drink.objects.create(name='카페 아메리카노', menu_id=1, category=category_sample)

해도 넣어짐


왜 category만 해도 되는지에 대해서 생각해 볼 것.

반응형