{"id":4556,"date":"2025-01-17T20:05:00","date_gmt":"2025-01-17T11:05:00","guid":{"rendered":"https:\/\/secondlife.lol\/?p=4556"},"modified":"2025-01-17T21:46:58","modified_gmt":"2025-01-17T12:46:58","slug":"python-orm-guide","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/ja\/python-orm-guide\/","title":{"rendered":"Python ORM - Django ORM\u3068SQL\u3001\u9577\u6240\u3068\u77ed\u6240\u307e\u3068\u3081\uff01"},"content":{"rendered":"<style>.kb-image4556_551e4f-68 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4556_551e4f-68 img.kb-img, .kb-image4556_551e4f-68 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4556_551e4f-68\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"906\" height=\"392\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10.jpg\" alt=\" Python ORM \uac1c\ub150\ub3c4 \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4557\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10.jpg 906w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-300x130.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-600x260.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-768x332.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-18x8.jpg 18w\" sizes=\"(max-width: 906px) 100vw, 906px\" \/><figcaption>( Python ORM \uac1c\ub150\ub3c4 )<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Python ORM &#8211; Django ORM\uacfc SQL, \ubb34\uc5c7\uc774 \ub354 \uc88b\uc744\uae4c?<\/h2>\n\n\n\n<p>\ud639\uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc5c5\ud560 \ub54c SQL \ub54c\ubb38\uc5d0 \uba38\ub9ac\uac00 \uc544\ud504\uc168\ub358 \uc801 \uc788\uc73c\uc2e0\uac00\uc694? \u201c\uc774 \ubcf5\uc7a1\ud55c SQL \ubb38\ubc95\uc744 \ub9e4\ubc88 \uc791\uc131\ud574\uc57c \ud558\ub098\u2026\u201d \ud83e\udd14 <\/p>\n\n\n\n<p>\uadf8\ub807\ub2e4\uba74 <a href=\"http:\/\/python.org\" target=\"_blank\" rel=\"noopener\">Python<\/a> ORM\uc744 \uc54c\uc544\ubcfc \ub54c\uac00 \uc654\uc2b5\ub2c8\ub2e4! \ud2b9\ud788 <a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noopener\">Django<\/a> ORM\uc740 Python \uac1c\ubc1c\uc790\ub77c\uba74 \uaf2d \ud55c \ubc88\uc740 \uc368\ubd10\uc57c \ud558\ub294 \uac15\ub825\ud55c \ub3c4\uad6c\uc778\ub370\uc694. <\/p>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 <strong>Python ORM\uc774\ub780 \ubb34\uc5c7\uc778\uc9c0\ubd80\ud130, \uc7a5\uc810\uacfc \ub2e8\uc810, \uadf8\ub9ac\uace0 Django ORM vs SQL \ube44\uad50<\/strong>\uae4c\uc9c0 \ud55c\ub208\uc5d0 \uc815\ub9ac\ud574 \ub4dc\ub9b4\uac8c\uc694. \ub05d\uae4c\uc9c0 \uc77d\uc73c\uc2dc\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ud6e8\uc52c \uce5c\uadfc\ud574\uc9c8 \uac81\ub2c8\ub2e4! <\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">ORM \uc774\ub780?<\/h2>\n\n\n\n<p>ORM(<strong>Object-Relational Mapping<\/strong>)\uc740 <strong>\uac1d\uccb4 \uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2e4\ub8e8\uae30 \uc704\ud55c \uae30\uc220<\/strong>\uc785\ub2c8\ub2e4. \uc27d\uac8c \ub9d0\ud558\uba74, SQL \uc5c6\uc774 Python \ucf54\ub4dc\ub9cc\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc870\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc8fc\ub294 \ub3c4\uad6c\uc608\uc694.<\/p>\n\n\n<style>.kb-image4556_9692bd-d1 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4556_9692bd-d1 img.kb-img, .kb-image4556_9692bd-d1 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4556_9692bd-d1\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"884\" height=\"139\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1.jpg\" alt=\"Python ORM \uc791\uc5c5 \ud750\ub984\ub3c4 \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4558\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1.jpg 884w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1-300x47.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1-600x94.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1-768x121.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-1-18x3.jpg 18w\" sizes=\"(max-width: 884px) 100vw, 884px\" \/><figcaption>( Python ORM \uc791\uc5c5 \ud750\ub984\ub3c4 )<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">ORM\uc758 \ud575\uc2ec \uac1c\ub150<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ud14c\uc774\ube14 \u2192 \ud074\ub798\uc2a4<\/strong>: \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ud14c\uc774\ube14\uc744 Python \ud074\ub798\uc2a4\uc640 \ub9e4\ud551\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ud589(Row) \u2192 \uac1d\uccb4<\/strong>: \ud14c\uc774\ube14\uc758 \uac01 \ud589\uc740 \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\ub85c \ubcc0\ud658\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucffc\ub9ac \u2192 \uba54\uc11c\ub4dc<\/strong>: SQL \ub300\uc2e0 Python \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud574 \ub370\uc774\ud130\ub97c \ub2e4\ub8f9\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p>\uc608\ub97c \ub4e4\uc5b4, \ub370\uc774\ud130\ub97c \ucd94\uac00\ud558\ub824\uba74 \uc774\ub807\uac8c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SQL \ubc29\uc2dd<\/strong>: <code>INSERT INTO users (name, age) VALUES ('Alice', 25);<\/code><\/li>\n\n\n\n<li><strong>ORM \ubc29\uc2dd<\/strong>: <code>user = User(name=\"Alice\", age=25); user.save()<\/code><\/li>\n<\/ul>\n\n\n\n<p>\uc774\ucc98\ub7fc ORM\uc740 SQL\uc744 \ubab0\ub77c\ub3c4 \uac1d\uccb4 \uc9c0\ud5a5 \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc810\uc774 \ub9e4\ub825\uc801\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Python ORM \ub2e8\uc810\uacfc \uc7a5\uc810<\/h2>\n\n\n<style>.kb-image4556_5139cd-d2 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4556_5139cd-d2 img.kb-img, .kb-image4556_5139cd-d2 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4556_5139cd-d2\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"885\" height=\"622\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3.jpg\" alt=\"Python ORM \ub2e8\uc810\uacfc \uc7a5\uc810 \uc815\ub9ac \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4560\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3.jpg 885w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3-300x211.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3-600x422.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3-768x540.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-3-18x12.jpg 18w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Python ORM \ub2e8\uc810<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ubcf5\uc7a1\ud55c \ucffc\ub9ac \ud55c\uacc4<\/strong>: JOIN\uc774\ub098 \ub300\ub7c9 \ub370\uc774\ud130 \ucc98\ub9ac\ub294 SQL\ubcf4\ub2e4 \uc131\ub2a5\uc774 \ub5a8\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucd94\uc0c1\ud654 \ube44\uc6a9<\/strong>: ORM\uc740 SQL\uc744 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud558\ubbc0\ub85c, \ucd94\uac00\uc801\uc778 \uc131\ub2a5 \uc624\ubc84\ud5e4\ub4dc\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ud559\uc2b5 \uc2dc\uac04 \ud544\uc694<\/strong>: ORM \ubb38\ubc95\uacfc \ubaa8\ub378 \uc124\uacc4\ub97c \uc775\ud788\ub294 \ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Python ORM\uc758 \uc7a5\uc810<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uac1c\ubc1c \uc18d\ub3c4 \uc0c1\uc2b9<\/strong>: SQL\uc744 \uc791\uc131\ud560 \ud544\uc694\uac00 \uc5c6\uc5b4 \uac1c\ubc1c\uc774 \ud6e8\uc52c \ube68\ub77c\uc9d1\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uac00\ub3c5\uc131 \ud5a5\uc0c1<\/strong>: \ucf54\ub4dc\uac00 \uc9c1\uad00\uc801\uc774\ub77c \ucd08\ubcf4\uc790\ub3c4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc720\uc9c0\ubcf4\uc218 \uc6a9\uc774<\/strong>: \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd \uc2dc \ubaa8\ub378\ub9cc \uc218\uc815\ud558\uba74 \ub418\ub2c8 \uc720\uc9c0\ubcf4\uc218\uac00 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>DB \ub3c5\ub9bd\uc131<\/strong>: \uc5ec\ub7ec \ub370\uc774\ud130\ubca0\uc774\uc2a4(MySQL, PostgreSQL \ub4f1)\uc640 \ud638\ud658\ub418\ubbc0\ub85c \ud655\uc7a5\uc131\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Django ORM vs SQL<\/h2>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15, .wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15[data-kb-block=\"kb-adv-heading4556_b49e0e-15\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15[data-kb-block=\"kb-adv-heading4556_b49e0e-15\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4556_b49e0e-15[data-kb-block=\"kb-adv-heading4556_b49e0e-15\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4556_b49e0e-15 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4556_b49e0e-15\">\uc2e4\uc81c \uc608\uc81c\ub85c \ube44\uad50\ud574\ubcf4\uae30<\/h3>\n\n\n\n<p>\uc774\uc81c Python ORM\uc758 \ub300\ud45c\uc8fc\uc790\uc778 Django ORM\uacfc Raw SQL\uc744 \ube44\uad50\ud574\ubcfc\uae4c\uc694?<\/p>\n\n\n<style>.kb-image4556_280f07-4a .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4556_280f07-4a img.kb-img, .kb-image4556_280f07-4a .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4556_280f07-4a\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"873\" height=\"572\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4.jpg\" alt=\"Django ORM vs SQL \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4562\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4.jpg 873w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4-300x197.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4-600x393.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4-768x503.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-10-4-18x12.jpg 18w\" sizes=\"(max-width: 873px) 100vw, 873px\" \/><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">1. Django ORM\uc73c\ub85c \ub370\uc774\ud130 \ucd94\uac00\ud558\uae30<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># models.py\nfrom django.db import models\n\nclass User(models.Model):\n    name = models.CharField(max_length=100)\n    age = models.IntegerField()\n\n# \ub370\uc774\ud130 \ucd94\uac00\nuser = User(name=\"Alice\", age=25)\nuser.save()\n\n#\ucf54\ub4dc \uc0c1\uc138\ud574\uc124\uc740 \ud3ec\uc2a4\ud2b8 \ub9c8\uc9c0\ub9c9\uc5d0\uc11c!<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2. SQL\ub85c \ub370\uc774\ud130 \ucd94\uac00\ud558\uae30<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO users (name, age) VALUES ('Alice', 25);<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3. \uc8fc\uc694 \ucc28\uc774\uc810<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ucf54\ub4dc \uac04\uacb0\uc131<\/strong>: Django ORM\uc740 SQL\ubcf4\ub2e4 \uc9c1\uad00\uc801\uc774\uace0 \uac04\uacb0\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc720\uc9c0\ubcf4\uc218\uc131<\/strong>: Django ORM\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd \uc2dc \uc218\uc815\uc774 \ub354 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc131\ub2a5<\/strong>: \ubcf5\uc7a1\ud55c \ucffc\ub9ac\ub294 SQL\uc774 \ub354 \ube60\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Django ORM\uacfc SQL\uc740 \uc5b8\uc81c \uac01\uac01 \uc368\uc57c \ud560\uae4c? (Django ORM vs SQL)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Django ORM\uc774 \uc801\ud569\ud55c \uacbd\uc6b0<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub2e8\uc21c\ud55c CRUD \uc791\uc5c5(\ub370\uc774\ud130 \ucd94\uac00, \uc870\ud68c, \uc218\uc815, \uc0ad\uc81c)\uc774 \uc8fc\uac00 \ub420 \ub54c.<\/li>\n\n\n\n<li>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc5c5\uc744 \ube60\ub974\uac8c \uc9c4\ud589\ud558\uace0 \uc2f6\uc744 \ub54c.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">SQL\uc774 \uc801\ud569\ud55c \uacbd\uc6b0<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ubcf5\uc7a1\ud55c \ucffc\ub9ac(JOIN, \uc11c\ube0c\ucffc\ub9ac \ub4f1)\uac00 \ud544\uc694\ud55c \uacbd\uc6b0.<\/li>\n\n\n\n<li>\uc131\ub2a5 \ucd5c\uc801\ud654\uac00 \uc911\uc694\ud55c \ub300\uaddc\ubaa8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Django ORM \ucf54\ub4dc \uc608\uc2dc<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># models.py\nfrom django.db import models\n\nclass User(models.Model):\n    name = models.CharField(max_length=100)  # \uc774\ub984 \ud544\ub4dc (\ubb38\uc790\uc5f4)\n    age = models.IntegerField()  # \ub098\uc774 \ud544\ub4dc (\uc815\uc218)\n\n# \ub370\uc774\ud130 \ucd94\uac00\nuser = User(name=\"Alice\", age=25)  # \uac1d\uccb4 \uc0dd\uc131\nuser.save()  # \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\n\n# \ub370\uc774\ud130 \uc870\ud68c\nusers = User.objects.all()  # \ubaa8\ub4e0 \ub370\uc774\ud130 \uc870\ud68c\nfor user in users:\n    print(user.name, user.age)\n\n# \ub370\uc774\ud130 \uc218\uc815\nalice = User.objects.get(name=\"Alice\")  # \ud2b9\uc815 \uc870\uac74\uc73c\ub85c \ub370\uc774\ud130 \uac80\uc0c9\nalice.age = 26  # \ub098\uc774 \uc218\uc815\nalice.save()  # \ubcc0\uacbd \uc0ac\ud56d \uc800\uc7a5\n\n# \ub370\uc774\ud130 \uc0ad\uc81c\nalice.delete()  # \ud574\ub2f9 \ub370\uc774\ud130 \uc0ad\uc81c\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<ol class=\"wp-block-list\">\n<li><strong>\ubaa8\ub378 \uc815\uc758<\/strong>: Django\uc758 <code>models.Model<\/code> \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ubc1b\uc544 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc5f0\uacb0\ub418\ub294 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.\n<ul class=\"wp-block-list\">\n<li><code>CharField<\/code>: \ubb38\uc790\uc5f4 \ub370\uc774\ud130\ub97c \uc800\uc7a5.<\/li>\n\n\n\n<li><code>IntegerField<\/code>: \uc815\uc218 \ub370\uc774\ud130\ub97c \uc800\uc7a5.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uac1d\uccb4 \uc0dd\uc131<\/strong>: <code>User(name=\"Alice\", age=25)<\/code>\ub85c User \uac1d\uccb4\ub97c \uc0dd\uc131.<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \uc800\uc7a5<\/strong>: <code>save()<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5.<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \uc870\ud68c<\/strong>: <code>objects.all()<\/code> \uba54\uc11c\ub4dc\ub85c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \uc218\uc815<\/strong>: <code>get()<\/code>\uc73c\ub85c \ud2b9\uc815 \ub370\uc774\ud130\ub97c \uac00\uc838\uc640 \uac12\uc744 \ubcc0\uacbd\ud55c \ud6c4 <code>save()<\/code>\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \uc0ad\uc81c<\/strong>: <code>delete()<\/code> \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc0ad\uc81c\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9c8\ubb34\ub9ac\ud558\uba70<\/h3>\n\n\n\n<p>\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 <strong>Python ORM<\/strong>\uc758 \uae30\ubcf8 \uac1c\ub150\ubd80\ud130, \uc7a5\uc810\uacfc \ub2e8\uc810, \uadf8\ub9ac\uace0 <strong>Django ORM vs SQL<\/strong> \ube44\uad50\uae4c\uc9c0 \uc0b4\ud3b4\ubd24\uc2b5\ub2c8\ub2e4. Django ORM\uc740 Python \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \uac15\ub825\ud55c \ub3c4\uad6c\ub85c \uc790\ub9ac \uc7a1\uc558\uc73c\uba70, SQL\uc758 \ubcf5\uc7a1\ud568\uc744 \ucd94\uc0c1\ud654\ud574 \uac1c\ubc1c \uc0dd\uc0b0\uc131\uc744 \ub192\uc5ec\uc90d\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ubcf5\uc7a1\ud55c \ucffc\ub9ac\uac00 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d4 \uc5ec\uc804\ud788 SQL\uc774 \ub354 \uc720\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uae30\uc874\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub9ac\uac00 \uc5b4\ub824\uc6b0\uc168\ub2e4\uba74 Django ORM\uc73c\ub85c \uc2dc\uc791\ud574\ubcf4\uc138\uc694. Python \uac1c\ubc1c\uc790\ub77c\uba74 \uaf2d \uc54c\uc544\uc57c \ud560 \ud544\uc218 \uae30\uc220\uc785\ub2c8\ub2e4! \ud83d\ude0a Django(\uc7a5\uace0)\uac00 \ubb54\uac00 \uc2f6\uc73c\uc2e0 \ubd84\uc740 <a href=\"https:\/\/secondlife.lol\/python-django-website-creation-guide\/\" data-type=\"post\" data-id=\"4339\">\ud30c\uc774\uc36c \uc7a5\uace0 \uc6f9\uc0ac\uc774\ud2b8 \ub9cc\ub4e4\uae30: \ucd08\ubcf4\uc790\ub97c \uc704\ud55c \uac00\uc774\ub4dc<\/a> \ud3ec\uc2a4\ud2b8\ub97c \ud655\uc778\ud574\ubcf4\uc138\uc694!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"># \ucf54\ub4dc \uc0c1\uc138\ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<pre class=\"wp-block-code\"><code># models.py\nfrom django.db import models<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\uc774 \ud30c\uc77c\uc740 &#8216;models.py&#8217;\ub77c\ub294 \uc774\ub984\uc73c\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. Django\uc5d0\uc11c \ubaa8\ub378\uc744 \uc815\uc758\ud558\ub294 \ud45c\uc900 \ud30c\uc77c\uba85\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li>&#8216;django.db&#8217;\uc5d0\uc11c &#8216;models&#8217; \ubaa8\ub4c8\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. \uc774 \ubaa8\ub4c8\uc740 Django\uc758 ORM \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>class User(models.Model):<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>&#8216;User&#8217;\ub77c\ub294 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud074\ub798\uc2a4\ub294 &#8216;models.Model&#8217;\uc744 \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4. \uc774\ub85c\uc368 User \ud074\ub798\uc2a4\uac00 Django \ubaa8\ub378\uc774 \ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>    name = models.CharField(max_length=100)<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>&#8216;name&#8217;\uc774\ub77c\ub294 \ud544\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud544\ub4dc\ub294 CharField \ud0c0\uc785\uc73c\ub85c, \ubb38\uc790\uc5f4\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>&#8216;max_length=100&#8217;\uc740 \uc774 \ud544\ub4dc\uc5d0 \ucd5c\ub300 100\uc790\uae4c\uc9c0 \uc800\uc7a5\ud560 \uc218 \uc788\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>    age = models.IntegerField()<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>&#8216;age&#8217;\ub77c\ub294 \ud544\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud544\ub4dc\ub294 IntegerField \ud0c0\uc785\uc73c\ub85c, \uc815\uc218\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code># \ub370\uc774\ud130 \ucd94\uac00\nuser = User(name=\"Alice\", age=25)<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>User \ubaa8\ub378\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>&#8216;name&#8217; \ud544\ub4dc\uc5d0 &#8220;Alice&#8221;, &#8216;age&#8217; \ud544\ub4dc\uc5d0 25\ub97c \ud560\ub2f9\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>user.save()<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>&#8216;save()&#8217; \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec \uc0dd\uc131\ud55c User \uc778\uc2a4\ud134\uc2a4\ub97c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \uba85\ub839\uc73c\ub85c \uc2e4\uc81c SQL INSERT \ucffc\ub9ac\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n<\/blockquote>\n\n\n<style>.kb-image4457_249bea-0c.kb-image-is-ratio-size, .kb-image4457_249bea-0c .kb-image-is-ratio-size{max-width:300px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c .kb-image-is-ratio-size{align-self:unset;}.kb-image4457_249bea-0c figure{max-width:300px;}.kb-image4457_249bea-0c .image-is-svg, .kb-image4457_249bea-0c .image-is-svg img{width:100%;}.kb-image4457_249bea-0c .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image4457_249bea-0c\"><figure class=\"aligncenter size-medium\"><img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp\" alt=\"\ud14c\ub9ac \uc774\ubaa8\ud2f0\ucf58\" class=\"kb-img wp-image-4456\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-600x600.webp 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-150x150.webp 150w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-768x768.webp 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-12x12.webp 12w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding.webp 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption><strong>( \uc990\uac81\uac8c \ucf54\ub529\uc744 \ud569\uc2dc\ub2e4! )<\/strong><\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Python ORM &#8211; Django ORM\uacfc SQL, \ubb34\uc5c7\uc774 \ub354 \uc88b\uc744\uae4c? \ud639\uc2dc&#8230;<\/p>","protected":false},"author":3,"featured_media":4565,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[777,779,34,778,486],"class_list":["post-4556","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-coding","tag-django-orm","tag-orm","tag-python","tag-sql","tag-486"],"taxonomy_info":{"category":[{"value":3,"label":"\ud30c\uc774\uc36c(Python)"}],"post_tag":[{"value":777,"label":"Django ORM"},{"value":779,"label":"ORM"},{"value":34,"label":"python"},{"value":778,"label":"SQL"},{"value":486,"label":"\ub370\uc774\ud130\ubca0\uc774\uc2a4"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/python-orm-\ud3ec\uc2a4\ud2b8-\uc378\ub124\uc77c-600x600.jpg",600,600,true],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/ja\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"\ud30c\uc774\uc36c(Python)","slug":"python-coding","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":20,"count":116,"filter":"raw","cat_ID":3,"category_count":116,"category_description":"","cat_name":"\ud30c\uc774\uc36c(Python)","category_nicename":"python-coding","category_parent":20}],"tag_info":[{"term_id":777,"name":"Django ORM","slug":"django-orm","term_group":0,"term_taxonomy_id":777,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":779,"name":"ORM","slug":"orm","term_group":0,"term_taxonomy_id":779,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":34,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":34,"taxonomy":"post_tag","description":"","parent":0,"count":21,"filter":"raw"},{"term_id":778,"name":"SQL","slug":"sql","term_group":0,"term_taxonomy_id":778,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":486,"name":"\ub370\uc774\ud130\ubca0\uc774\uc2a4","slug":"%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4","term_group":0,"term_taxonomy_id":486,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/4556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/comments?post=4556"}],"version-history":[{"count":4,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/4556\/revisions"}],"predecessor-version":[{"id":4566,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/posts\/4556\/revisions\/4566"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/media\/4565"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/media?parent=4556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/categories?post=4556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/ja\/wp-json\/wp\/v2\/tags?post=4556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}