U E D R , A S I H C RSS

django/Modifying Object

insert & update

SQL๋ฌธ์—์„œ๋Š” insert into values ๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , update set where ๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ํ•˜์ง€๋งŒ django๋Š” ์ด ๋‘˜์„ ํ•˜๋‚˜๋กœ ๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ์ž‘์—…์„, ๋ชจ๋ธ๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋ฅผ ์ €์žฅ(save)ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ƒํ™”ํ–ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋ธํด๋ž˜์Šค๋Š” save๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋ธ๋„ save๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์—์„œ ๋ณด๋“ฏ์ด save ๋ฉ”์†Œ๋“œ๋Š” ์ƒˆ๋กœ๋งŒ๋“  ๋ ˆ์ฝ”๋“œ ํ•„๋“œ์˜ ์†์„ฑ์— ๋”ฐ๋ผ์„œ ์ ๋‹นํžˆ ์‚ฝ์ž…๊ณผ ๊ฐฑ์‹  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
class Employee(models.Model):
    name= models.CharField(maxlength=100)
    email= models.EmailField()
Employee ๋ชจ๋ธ์— ํ•ด๋‹นํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  save๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ๊ธฐ์กด์— ์‚ฝ์ž…ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ save๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , ๋‹ค์Œ ๋ฒˆ save๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ๋ ˆ์ฝ”๋“œ๋Š” ๊ฐ์ฒด๋กœ, ๋ ˆ์ฝ”๋“œ์˜ ์†์„ฑ์„ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
e= Employee(name='John', email='John@django.com')
e.save() # insert
e.name= 'jack'
e.save() # update
Screenshot-save.png
save๋ฉ”์†Œ๋“œ๋Š” ์šฐ์„  ํ˜„์žฌ ์ €์žฅํ•˜๋ ค๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ฃผํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ง€ ๊ฐฑ์‹ ํ•  ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ฃผํ‚ค๋ฅผ ์ด์šฉํ•ด ๊ธฐ์กด์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํžˆ ๊ฐฑ์‹ ํ•œ๋‹ค. ์ฃผํ‚ค๋ฅผ ์ด์šฉํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํžˆ ์‚ฝ์ž…ํ•œ๋‹ค. ๋งŒ์ผ ์ฃผํ‚ค๊ฐ€ ์—†๋Š”๋ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฝ์ž…ํ•˜์—ฌ๋„ ์ƒ๊ด€์ด ์—†์œผ๋ฏ€๋กœ ์‚ฝ์ž…ํ•œ๋‹ค. ๋‹ค์Œ์€ save๋ฉ”์†Œ๋“œ์˜ ์ฃผ์š” ๋ถ„๊ธฐ์ ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.
  def save(self):
        # First, try an UPDATE. If that doesn't update anything, do an INSERT.
        record_exists = True
        if pk_set:
            # Determine whether a record with the primary key already exists.
            cursor.execute("SELECT 1 FROM %s WHERE %s=%%s LIMIT 1" % \
            # If it does already exist, do an UPDATE.
            if cursor.fetchone():
                    cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \
            else:
                record_exists = False
        if not pk_set or not record_exists:
            if pk_set:
            # If the PK has been manually set, respect that.
            else:
                # Create a new record with defaults for everything.
                cursor.execute("INSERT INTO %s (%s) VALUES (%s)" %

delete

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์€ Modelํด๋ž˜์Šค์˜ delete๋ฉ”์†Œ๋“œ๋กœ ์ถ”์ƒํ™”ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์—์„œ ์‹ค์ œ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” delete_objects์ด๋‹ค.8 delete_objects๋ฉ”์†Œ๋“œ๋Š” ์ง€์šฐ๋ ค๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ์™ธ๋ž˜ํ‚ค๋ฅผ NULL๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์€ Riskํ…Œ์ด๋ธ”์—์„œ ํ•œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” Consequence, Control ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œํ•˜๋Š”์ง€๋ฅผ ๋ฌป๋Š” ์‚ฌ์šฉ์ž ํ™”๋ฉด์ด๋‹ค.
django_delete.jpg
----
django/Example
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:38
Processing time 0.0047 sec