SlideShare uma empresa Scribd logo
1 de 9
Basic Django ORM
Parkayun
-Rainist Co.Ltd
What’s ORM?
 Object Relational Mapping
 일종의 DB Framework.
 ORM은 객체를 DB에 저장해 준다.
 ORM은 DB에 저장된 Data로부터 객체를 생성해준다.
Why use ORM?
 깔끔한 코드를 유지할 수 있다.
 생산성이 무지막지하게 증가한다.
 테스트를 쉽게 해준다.
What’s Django ORM?
 Django MVC패턴중 Model에 해당.
 django.db.models.Model을 상속.
 order_by, filter, exists, exclude등 많은 함수들.
 다양한 Database 지원
 postgres, sqlite, mysql, mssql, oracle
 유연한 맵핑가능.
 many to one, one to one, many to many
 Django Forms 모듈과 연동 가능.
 Model form
 트랜젝션 컨트롤 가능.
 non_atmoic_requests, commit_on_success 등
Basic SQL vs ORM 0
id username password
1 admin 912ec803b2ce49e4am5106…
위와 같은 테이블을 만들때
SQL
- CREATE TABLE `user` (‘id’ int NOT NULL AUTO_INCREMENT,
‘username’ VARCHAR(10) NOT NULL, ‘password’ VARCHAR(30)
NOT NULL, PRIMARY KEY(id));
Django ORM
- class User(models.Model):
- username = models.CharField(max_length=10)
- password = models.CharField(max_length=30)
Basic SQL vs ORM 1
id username password
1 admin 912ec803b2ce49e4am5106…
username을 검색할 때
SQL
- SELECT username FROM `user_table` WHERE `id` = 1;
Django ORM
- User.objects.get(id=1).username
Basic SQL vs ORM 2
test 유저 생설할 때
SQL with PHP
- $sql= SELECT * FROM `user_table` WHERE `username` = ‘test’;
- $query = mysql_query($sql);
- $flag = True;
- if (mysql_fetch_array($query)) {
- 유저가 있나 없나 어쩌고 저쩌고
- }
- if ($flag) mysql_query(“INSERT INTO `user_table` VALUES (‘test’,
md5(‘test’));
Django ORM
- User.objects.get_or_create(username=‘test’, password=md5(‘test’))
One to One Relationships
id place
Restaurant 테이블의 place컬럼과 Place테이블을
맵핑
class Place(models.Model):
name = models.CharField(max_length=15)
address = models.CharField(max_length=80)
class Restaurant(models.Model):
place = models.OneToOneField(Place)
p1 = Place.obejcts.create(name=‘test’, address=‘test address’)
Restaurant.objects.create(place=p1)
id name address
Many to Many Relationships
id content tag
Article 테이블의 tag컬럼과 Tag필드를 맵핑
class Tag(models.Model):
title = models.CharField(max_length=15)
class Meta:
ordering = (‘title’,)
class Article(models.Model):
content = models.CharField(max_length=100)
tag = models.ManyToManyField(Tag)
a1 = Article.object.create(‘test article’)
a1.save()
a1.tag.add(Tag.objects.create(‘test tag1’), Tag.objects.create (‘test tag2’))
id name

Mais conteúdo relacionado

Destaque

Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Zhe Li
 
Django and Mongoengine
Django and MongoengineDjango and Mongoengine
Django and Mongoengineaustinpublic
 
Advanced Django ORM techniques
Advanced Django ORM techniquesAdvanced Django ORM techniques
Advanced Django ORM techniquesDaniel Roseman
 
Django REST Framework
Django REST FrameworkDjango REST Framework
Django REST FrameworkLoad Impact
 
REST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkREST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkMarcel Chastain
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터jinho park
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Web backends development using Python
Web backends development using PythonWeb backends development using Python
Web backends development using PythonAyun Park
 

Destaque (8)

Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...Introduction to Django REST Framework, an easy way to build REST framework in...
Introduction to Django REST Framework, an easy way to build REST framework in...
 
Django and Mongoengine
Django and MongoengineDjango and Mongoengine
Django and Mongoengine
 
Advanced Django ORM techniques
Advanced Django ORM techniquesAdvanced Django ORM techniques
Advanced Django ORM techniques
 
Django REST Framework
Django REST FrameworkDjango REST Framework
Django REST Framework
 
REST Easy with Django-Rest-Framework
REST Easy with Django-Rest-FrameworkREST Easy with Django-Rest-Framework
REST Easy with Django-Rest-Framework
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Web backends development using Python
Web backends development using PythonWeb backends development using Python
Web backends development using Python
 

Semelhante a Basic Django ORM

회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemyJc Kim
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료beom kyun choi
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
Pycon2019 django query_optimization
Pycon2019 django query_optimizationPycon2019 django query_optimization
Pycon2019 django query_optimizationSoyoungYoon11
 
Pycon presentation final
Pycon presentation finalPycon presentation final
Pycon presentation finalSoyoungYoon11
 
AWS없이 만든 AWS와 유사한 데이터 파이프라인
AWS없이 만든  AWS와 유사한 데이터 파이프라인AWS없이 만든  AWS와 유사한 데이터 파이프라인
AWS없이 만든 AWS와 유사한 데이터 파이프라인Kim Hyuk
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVONYounghan Kim
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육탑크리에듀(구로디지털단지역3번출구 2분거리)
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃Kwangyoun Jung
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Younghan Kim
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들Kivol
 
Sql 중심 코드 탈피
Sql 중심 코드 탈피Sql 중심 코드 탈피
Sql 중심 코드 탈피ssuser776e2d
 
CoreData.pptx
CoreData.pptxCoreData.pptx
CoreData.pptxJUNSHIN8
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트효준 강
 
자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)DK Lee
 

Semelhante a Basic Django ORM (20)

회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
Pycon2019 django query_optimization
Pycon2019 django query_optimizationPycon2019 django query_optimization
Pycon2019 django query_optimization
 
Pycon presentation final
Pycon presentation finalPycon presentation final
Pycon presentation final
 
AWS없이 만든 AWS와 유사한 데이터 파이프라인
AWS없이 만든  AWS와 유사한 데이터 파이프라인AWS없이 만든  AWS와 유사한 데이터 파이프라인
AWS없이 만든 AWS와 유사한 데이터 파이프라인
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
[스프링교육추천강좌]스프링마이바티스를이용한통합구현재직자향상과정_자바학원/스프링학원/스프링학원추천/구로IT/국비지원/재직자교육
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리
 
Spark sql
Spark sqlSpark sql
Spark sql
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
Sql 중심 코드 탈피
Sql 중심 코드 탈피Sql 중심 코드 탈피
Sql 중심 코드 탈피
 
CoreData.pptx
CoreData.pptxCoreData.pptx
CoreData.pptx
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
 
자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)
 

Último

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Último (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

Basic Django ORM

  • 2. What’s ORM?  Object Relational Mapping  일종의 DB Framework.  ORM은 객체를 DB에 저장해 준다.  ORM은 DB에 저장된 Data로부터 객체를 생성해준다.
  • 3. Why use ORM?  깔끔한 코드를 유지할 수 있다.  생산성이 무지막지하게 증가한다.  테스트를 쉽게 해준다.
  • 4. What’s Django ORM?  Django MVC패턴중 Model에 해당.  django.db.models.Model을 상속.  order_by, filter, exists, exclude등 많은 함수들.  다양한 Database 지원  postgres, sqlite, mysql, mssql, oracle  유연한 맵핑가능.  many to one, one to one, many to many  Django Forms 모듈과 연동 가능.  Model form  트랜젝션 컨트롤 가능.  non_atmoic_requests, commit_on_success 등
  • 5. Basic SQL vs ORM 0 id username password 1 admin 912ec803b2ce49e4am5106… 위와 같은 테이블을 만들때 SQL - CREATE TABLE `user` (‘id’ int NOT NULL AUTO_INCREMENT, ‘username’ VARCHAR(10) NOT NULL, ‘password’ VARCHAR(30) NOT NULL, PRIMARY KEY(id)); Django ORM - class User(models.Model): - username = models.CharField(max_length=10) - password = models.CharField(max_length=30)
  • 6. Basic SQL vs ORM 1 id username password 1 admin 912ec803b2ce49e4am5106… username을 검색할 때 SQL - SELECT username FROM `user_table` WHERE `id` = 1; Django ORM - User.objects.get(id=1).username
  • 7. Basic SQL vs ORM 2 test 유저 생설할 때 SQL with PHP - $sql= SELECT * FROM `user_table` WHERE `username` = ‘test’; - $query = mysql_query($sql); - $flag = True; - if (mysql_fetch_array($query)) { - 유저가 있나 없나 어쩌고 저쩌고 - } - if ($flag) mysql_query(“INSERT INTO `user_table` VALUES (‘test’, md5(‘test’)); Django ORM - User.objects.get_or_create(username=‘test’, password=md5(‘test’))
  • 8. One to One Relationships id place Restaurant 테이블의 place컬럼과 Place테이블을 맵핑 class Place(models.Model): name = models.CharField(max_length=15) address = models.CharField(max_length=80) class Restaurant(models.Model): place = models.OneToOneField(Place) p1 = Place.obejcts.create(name=‘test’, address=‘test address’) Restaurant.objects.create(place=p1) id name address
  • 9. Many to Many Relationships id content tag Article 테이블의 tag컬럼과 Tag필드를 맵핑 class Tag(models.Model): title = models.CharField(max_length=15) class Meta: ordering = (‘title’,) class Article(models.Model): content = models.CharField(max_length=100) tag = models.ManyToManyField(Tag) a1 = Article.object.create(‘test article’) a1.save() a1.tag.add(Tag.objects.create(‘test tag1’), Tag.objects.create (‘test tag2’)) id name