SlideShare a Scribd company logo
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

More Related Content

Viewers also liked (8)

PDF
Introduction to Django REST Framework, an easy way to build REST framework in...
Zhe Li
 
PPT
Django and Mongoengine
austinpublic
 
KEY
Advanced Django ORM techniques
Daniel Roseman
 
PDF
Django REST Framework
Load Impact
 
PPTX
REST Easy with Django-Rest-Framework
Marcel Chastain
 
PPTX
Node Js와 Redis를 사용한 구조화된 데이터
jinho park
 
PDF
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
PPTX
Web backends development using Python
Ayun Park
 
Introduction to Django REST Framework, an easy way to build REST framework in...
Zhe Li
 
Django and Mongoengine
austinpublic
 
Advanced Django ORM techniques
Daniel Roseman
 
Django REST Framework
Load Impact
 
REST Easy with Django-Rest-Framework
Marcel Chastain
 
Node Js와 Redis를 사용한 구조화된 데이터
jinho park
 
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
Web backends development using Python
Ayun Park
 

Similar to Basic Django ORM (20)

PDF
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
PDF
Pycon2019 django query_optimization
SoyoungYoon11
 
PDF
Pycon presentation final
SoyoungYoon11
 
PPTX
레거시 시스템에 Django 들이밀기
Jiyong Jung
 
PDF
Django, 저는 이렇게 씁니다.
Kyoung Up Jung
 
PDF
Django의 배신(주니어 개발자의 Django 삽질기)
Eunhyang Kim
 
PPTX
Python 웹 프로그래밍
용 최
 
PDF
Python codelab2
건희 김
 
PPTX
mongoDB 3 type modeling in production
DongHan Kim
 
PDF
좌충우돌 ORM 개발기 2012 DAUM DEVON
Younghan Kim
 
PPTX
Django - CRUD 기능 구현
Jessica Lee
 
PDF
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
PDF
회사에서 써보는 SQLAlchemy
Jc Kim
 
PDF
Mysql on windows_kr_20170221
Sumi Ryu
 
PPTX
ORM을 활용할 경우의 설계, 개발 과정
Javajigi Jaesung
 
PDF
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
PDF
Gnuboard to Django Series #01
Junbum Lee
 
PDF
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
승빈이네 공작소
 
PPTX
9장. 문서 데이터베이스
kidoki
 
PPTX
CoreData.pptx
JUNSHIN8
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
Pycon2019 django query_optimization
SoyoungYoon11
 
Pycon presentation final
SoyoungYoon11
 
레거시 시스템에 Django 들이밀기
Jiyong Jung
 
Django, 저는 이렇게 씁니다.
Kyoung Up Jung
 
Django의 배신(주니어 개발자의 Django 삽질기)
Eunhyang Kim
 
Python 웹 프로그래밍
용 최
 
Python codelab2
건희 김
 
mongoDB 3 type modeling in production
DongHan Kim
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
Younghan Kim
 
Django - CRUD 기능 구현
Jessica Lee
 
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
회사에서 써보는 SQLAlchemy
Jc Kim
 
Mysql on windows_kr_20170221
Sumi Ryu
 
ORM을 활용할 경우의 설계, 개발 과정
Javajigi Jaesung
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
Youngil Cho
 
Gnuboard to Django Series #01
Junbum Lee
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
승빈이네 공작소
 
9장. 문서 데이터베이스
kidoki
 
CoreData.pptx
JUNSHIN8
 
Ad

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