일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MAC
- 알고리즘 연습
- react
- Django
- django rest framework
- Baekjoon
- HTML
- CSS
- 알고리즘
- 백준
- Algorithm
- Git
- c++
- AWS
- javascript
- 파이썬 알고리즘
- web
- DRF
- API
- django ORM
- js
- 파이썬
- 알고리즘 풀이
- java
- es6
- 장고
- django widget
- form
- 알고리즘 문제
- PYTHON
- Today
- Total
목록분류 전체보기 (341)
수학과의 좌충우돌 프로그래밍
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 질의 횟수 확인 Django 단위 테스트 클래스에 assertNumQueries() 메서드를 사용하여 데이터베이스에 발생하는 질의 횟수를 검증할 수 있습니다. def test_number_of_queries(self): User.objects.create(username='testuser1') # 위 ORM 명령으로 질의 횟수가 1 번 일어나야 한다. self.assertNumQueries(1) User.objects.filter(username='testuser').update(username='test1user') # 질의 횟수가 한 번 증가해야 한..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 자기 참조 외래 키 자기 자신을 참조하는 자기 참조 외래 키를 정의할 수 있습니다. class Employee(models.Model): manager = models.ForeignKey('self', on_delete=models.CASCADE) class Employee(models.Model): manager = models.ForeignKey("Employee", on_delete=models.CASCADE) 2. 기존 DB를 django Model로 옮기기 Django에서 models.py를 통해 DB를 생성할 수 도 있지만 경우에 따라 기존의..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. QuerySet 정렬 Django에서는 order_by 메서드를 사용하여 QuerySet을 정렬할 수 있습니다. 여러 필드에 대해서도 가능하며 - 를 사용하여 내림차순으로 정렬도 가능합니다. Post.objects.all().order_by('created_at', '-updated_at') SELECT `post_post`.`id`, `post_post`.`user_id`, `post_post`.`title`, `post_post`.`content`, `post_post`.`created_at`, `post_post`.`updated_at` FROM ..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 여러 개의 행을 한 번에 생성하기 여러 개의 데이터를 저장하기 위해서 create() 함수를 여러 번 쓰는 것은 비효율적입니다. DB와 연결 후 저장을 하고 연결을 끊게 되는데 쿼리가 여러 개면 이 과정을 무의미하게 반복됩니다. 따라서 저장할 데이터가 많을 경우 한 번에 저장하는게 좋습니다. Django에서는 bulk_create 를 제공해줍니다. 이 함수는 아직 저장되지 않은 객체를 담은 리스트를 인자로 받습니다. categories = [Category(name='a'), Category(name='b')] category = Category.obj..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 14. Q 객체 앞서서 Q 객체에 대해 다루었다시피 이를 통해 SQL 질의의 WHERE 절을 수행할 수 있습니다. queryset = User.objects.filter( Q(first_name__startswith='R') & ~Q(last_name__startswith='Z') ) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."first_name", "auth_user"."last_name" FROM "auth_user" WHERE ("auth_user"."first_name"::text L..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 10. JOIN SQL에서는 JOIN문을 이용해 동일한 값을 가진 열을 기준으로 두 테이블을 결합할 수 있습니다. django에서도 JOIN을 할 수 있는 방법이 존재합니다. select_related 모든 Post를 가져오는 간단한 쿼리를 살펴봅시다. post_all = Post.objects.all() 이에 대한 SQL 질의문입니다. 놀랍게도 Post에 대한 질의문과 Post와 OneToOne으로 연결되어 있는 User에 대한 질의가 함께 이루어집니다. Post가 N개 있다면 각 Post에 해당하는 User를 조회하기 위해 N번의 추가적인 질의가 이루어집..
해당 포스팅은 Django ORM CookBook 을 공부하며 새로 알게된 사실이나 더 나아가 추가적으로 같이 알면 좋을 내용을 정리하고 있습니다. 1. 장고 ORM이 실행하는 실제 SQL 질의문 확인 ORM에 대응되는 SQL 질의문을 확인하기 위해서는 다음과 같이 확인할 수 있습니다. queryset = Post.objects.all() str(queryset.query) ''' 'SELECT `post_post`.`id`, `post_post`.`user_id`, `post_post`.`title`, `post_post`.`content`, `post_post`.`kind`, `post_post`.`image`, `post_post`.`created_at`, `post_post`.`updated_at..
위상정렬이란? 위상 정렬은 순서가 정해져있는 작업 차례로 수행해야 할 때, 그 순서를 결정해주는 알고리즘입니다. 그림을 보며 이해해봅시다. 다음과 같은 그래프에서 앞선 작업 2,3이 끝나야 뒤 작업 4가 이루어질 수 있으며 이 때 둘 중 무엇을 먼저 끝내던 규칙에 위배 되지 않기 때문에 경로는 여러 개가 나올 수 있습니다. 단 위상정렬이 성립하기 위해서는 DAG여야 합니다. DAG란? Directed Acyclic Graph의 줄임말로 사이클이 존재하지 않는 방향 그래프입니다. 만일 위 그림에서 5이 1에 연결되었다면 시작점이 존재하지 않기 때문에 위상정렬이 성립할 수 없습니다. 위상 정렬 원리 위상 정렬이 어떤 원리로 동작하는지 살펴봅시다. 위상 정렬을 스택이나 큐를 사용하여 구현할 수 있지만 큐를 사..
https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 문제는 아주 간단합니다. Combination을 계산하는 문제로, 파스칼 삼각형을 이용하여 문제를 해결하려 하였습니다. 그런데 n, m의 값이 커지면 unsigned long long으로도 데이터를 전부 표현할 수 가 없어 덧셈을 문자열로 구현하였습니다. #include #include using namespace std; // nCm : pascal[i][j] string pascal[101][101]; string add_string_num(string a, string b) { int aidx = a.siz..
모델링을 하다보면 한 모델이 여러 개의 모델과 관계를 맺어야하는 순간이 있습니다. 많이 접해봤을 블로그 프로젝트만 해도 게시물과 댓글에 좋아요 기능을 넣기 위해서는 다음과 같은 모델링이 필요합니다. class Post(models.Model): # 생략 class Comment(models.Model): # 생략 class Like(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) comment = models.ForeignKey(Comment, on_delete=models.CASCADE) 물론 모델링에는 정답이 없으니 Like 를 PostLike와 CommentLike 로 나눌 수도 있고 방법은 다양합니다. 하지만 위에 소..