Basic Django ORM

9

Click here to load reader

Transcript of Basic Django ORM

Page 1: Basic Django ORM

Basic Django ORMParkayun

-Rainist Co.Ltd

Page 2: Basic Django ORM

What’s ORM? Object Relational Mapping

일종의 DB Framework. ORM 은 객체를 DB 에 저장해 준다 . ORM 은 DB 에 저장된 Data 로부터 객체를 생성해준다 .

Page 3: Basic Django ORM

Why use ORM? 깔끔한 코드를 유지할 수 있다 . 생산성이 무지막지하게 증가한다 . 테스트를 쉽게 해준다 .

Page 4: Basic Django 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 등

Page 5: Basic Django ORM

Basic SQL vs ORM 0id 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)

Page 6: Basic Django ORM

Basic SQL vs ORM 1id username password

1 admin 912ec803b2ce49e4am5106…

username 을 검색할 때SQL- SELECT username FROM `user_table` WHERE `id` = 1;Django ORM- User.objects.get(id=1).username

Page 7: Basic Django ORM

Basic SQL vs ORM 2test 유저 생설할 때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’))

Page 8: Basic Django ORM

One to One Relationshipsid 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

Page 9: Basic Django ORM

Many to Many Relationshipsid 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