일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 재귀
- java #자바
- css #웹 #생활코딩
- Dijkstra
- 파이썬
- DFS
- 다익스트라
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 백준
- 다이나믹프로그래밍
- react #리액트 #동빈나
- 투포인터
- BFS
- 자바 #java
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- dp
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 알고리즘
- java #자바 #동빈나
- 프로그래머스
- java #자바 #나동빈
- 코딩테스트
- java #자바 #생활코딩
- 백트랙킹
- PYTHON
- 파이썬 #백준 #알고리즘 #코딩테스트
- 백준 #파이썬 #알고리즘 #코딩테스트
- 백준 #알고리즘 #파이썬 #코딩테스트
- react #리액트 #동빈나 #나동빈 #유튜브강의
- css #생활코딩 #웹
Archives
- Today
- Total
커리까지
db에서 models 삭제하기 본문
728x90
SMALL
- player 모델에서 name이 중복된 선수와 현역 선수를 제거한다.
- name 필드를 기준으로 값을 가져오기 위해 values를 사용한다.
- values를 사용하면
{'name' : 'curry'}
형식으로 값을 반환한다.
- values를 사용하면
- 1번에서 name을 기준으로 가져온 값을 annotate를 사용해서 id로 group by를 수행한다.
- 2번에서 수행한 값
cnt
를 기준으로 2개 이상인 obj만 반환한다. - 3번의 값으로 for loop를 돌면서 이름을 기준으로 데이터를 가져오고
- retire_year로 오름차순하여 맨 처음 값만 가져온다.
- 해당 obj를 삭제한다.
- 현역 선수 이름을 리스트로 담는다.
- 선수 이름이 들어간 모든 obj를 가져온다.
- 다 삭제한다.
- 여기서는 1개라 그냥 사용했고 2개 이상이면 for loop로 돌면서 삭제하면 된다.
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'nba_predict_django.settings'
import django
django.setup()
from nba_app.models import Player
from django.db.models import Count
player_obj = Player.objects.values('name').annotate(cnt=Count('id')).filter(cnt__gte=2)
for i in player_obj:
name = i['name']
obj = Player.objects.filter(name=name).order_by("retire_year")[0]
obj.delete()
activate_player = ["Ray Allen"]
activate_player_obj = Player.objects.filter(name__in=activate_player)
activate_player_obj.delete()
728x90
LIST
'django' 카테고리의 다른 글
pythonanywhere django 배포하기(+깃허브 연동)_02 (0) | 2022.08.18 |
---|---|
pythonanywhere django 배포하기(+깃허브 연동)_01 (0) | 2022.08.16 |
크롤링 후 DB에 데이터 삽입하기 (0) | 2022.08.09 |
[Django REST framework] 로그인 API 구현하기 (0) | 2022.03.26 |
[Django REST framework] 회원가입 API 구현하기 (0) | 2022.03.24 |