{"id":211,"date":"2020-03-11T01:25:46","date_gmt":"2020-03-10T16:25:46","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=211"},"modified":"2025-09-09T09:14:05","modified_gmt":"2025-09-09T00:14:05","slug":"python-sql-basic-sample-source","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2020\/03\/11\/211\/","title":{"rendered":"Python sql basic sample source"},"content":{"rendered":"\n<p>\ub108\ubb34 \uc624\ub7ab\ub9cc\uc5d0 SQL \uc0ac\uc6a9\ud558\ub824\ub2c8 \ud558\ub098\ub3c4 \uae30\uc5b5\uc774 \ub098\uc9c8 \uc54a\uc558\ub2e4. \uc548\ub4dc\ub85c\uc774\ub4dc\ub098 \uc2f1\uae00 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub9ce\uc774 \uc4f0\uc774\ub294 sqlite3\uc640 mySQL \ud638\ud658 DB\uc778 mariaDB\ub97c \uc124\uce58\ud574\uc11c \uac00\uc7a5 \uac04\ub2e8\ud55c \ub3d9\uc791\ub4e4\uc744 \ud14c\uc2a4\ud2b8\ud574 \ubd24\ub2e4. \ud14c\uc774\ube14 \uc0dd\uc131, \ub808\ucf54\ub4dc \ucd94\uac00(INSERT), \uc77d\uae30(SELECT), \uc218\uc815(UPDATE), \uc0ad\uc81c(DELETE). <\/p>\n\n\n\n<p> \uac04\ub2e8\ud55c \uad6c\ubb38\ub4e4\uc740 sqlite3\uc640 mySQL \uad6c\ubd84\uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc904 \uc54c\uc558\ub294\ub370, \ubbf8\ubb18\ud558\uac8c \ub2ec\ub77c \uc0b4\uc9dd \ub2f9\ud669\ud588\ub2e4. \uc608\ub85c sqlite3\uc5d0\uc11c AUTOINCREMENT \uac00 mySQL\uc5d0\uc120 AUTO_INCREMENT\ub85c \uc4f0\uace0, PRIMARY KEY\ub3c4 sqlite3\ub294 \ud56d\ubaa9\uc5d0 \uba85\uc2dc\ud574 \uc8fc\ub294\ub370, mySQL\uc5d0\uc120 \ubcc4\ub3c4\ub85c \ud45c\uc2dc\ud574\uc900\ub2e4. <\/p>\n\n\n\n<p>\ud30c\uc774\uc36c\uc73c\ub85c Database\uc4f0\uba74\uc11c \uac00\uc7a5 \uc8fc\uc758\ud574\uc57c \ud560 \uc810\uc740 SQL Injection \uacf5\uaca9\uc5d0 \ub300\ud574 \ucde8\uc57d\ud558\uc9c0 \uc54a\uac8c \uc0ac\uc6a9\ud574\uc57c\ud55c\ub2e4\ub294 \uc810\uc774\ub2e4. SQL\ubb38\uc774 \ud14d\uc2a4\ud2b8 \uad6c\ubb38\uc774\ub2e4\ubcf4\ub2c8, Python\ub0b4\uc5d0\uc11c \uc784\uc758\ub85c \uc2a4\ud2b8\ub9c1\uc744 \uc870\ud569\ud574\uc11c \uc4f0\ub294 \uacbd\uc6b0\uac00 \uc788\ub294\ub370, \ub204\uad70\uac00 \uc545\uc758\uc801\uc73c\ub85c &#8216;DROP TABLE&#8217;\uac19\uc740 \uad6c\ubb38\uc744 \ub07c\uc6cc\ub123\uc73c\uba74 \ub370\uc774\ud130\uac00 \ub0a0\ub77c\uac00\ub294\ub4f1\uc758 \ud070 \ubb38\uc81c\uac00 \ub420 \uc218 \uc788\ub2e4. \ud574\uacb0\ucc45\uc740 \ud30c\ub77c\ubbf8\ud130\ub97c \uc774\uc6a9\ud574 SQL\ubb38\uc744 \uc2e4\ud589\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># sqlite3\ncursor.execute(\n    \"INSERT INTO likes (user_id, post_id) \n     VALUES (?, ?);\", (3, 6))\n\n# mySQL\ncursor.execute(\n    \"INSERT INTO likes (user_id, post_id) \n     VALUES (%s, %s);\", (3, 6))\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #768390\"># sqlite3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">cursor.execute(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #96D0FF\">&quot;INSERT INTO likes (user_id, post_id) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     VALUES (<\/span><span style=\"color: #FF938A; font-style: italic\">?<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #FF938A; font-style: italic\">?<\/span><span style=\"color: #ADBAC7\">);<\/span><span style=\"color: #96D0FF\">&quot;, (3, 6))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># mySQL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">cursor.execute(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #96D0FF\">&quot;INSERT INTO likes (user_id, post_id) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     VALUES (<\/span><span style=\"color: #F47067\">%<\/span><span style=\"color: #ADBAC7\">s, <\/span><span style=\"color: #F47067\">%<\/span><span style=\"color: #ADBAC7\">s);<\/span><span style=\"color: #96D0FF\">&quot;, (3, 6))<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc758 \ucf54\ub4dc\ucc98\ub7fc Python\uc5d0\uc11c SQL\ubb38\uc740 cursor\ub97c \uc5bb\uc5b4\uc640 execute()\ub85c \uc2e4\ud589\ud558\uac8c \ub418\ub294\ub370, \uadf8 \uc778\uc790\ub97c \ud30c\ub77c\ubbf8\ud130(%s)\ub85c \uc0ac\uc6a9\ud558\uace0 \uac70\uae30\uc5d0 \ub300\uc751\ud558\ub294 \uac12\uc744 Tuple\ub85c \ub118\uae30\ub294 \uc2dd\uc774\ub2e4. \uc774\ub807\uac8c\ud558\uba74 SQL Injection \uacf5\uaca9\uc5d0 \uc548\uc804\ud558\ub2e4\uace0 \ud55c\ub2e4.  \uc8fc\uc758\ud560\uc810\uc740 sqlite3\uc5d0\uc11c\ub294 \ud30c\ub77c\ubbf8\ud130 \ud45c\uc2dc\ub85c &#8216;?&#8217;\ub97c \uc0ac\uc6a9\ud558\uace0, mySQL\uc5d0\uc11c\ub294 &#8216;%s&#8217;\ub97c \uc0ac\uc6a9\ud55c\ub2e4.  <\/p>\n\n\n\n<p>\ud29c\ud1a0\ub9ac\uc5bc \uc2dd\uc73c\ub85c \uc815\ub9ac\ud560 \uc5ec\ub825\uc740 \uc5c6\uace0, \ud14c\uc2a4\ud2b8 \ud588\ub358 \ucf54\ub4dc\ub098 \uc62c\ub824\ubcf8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-coblocks-gist\"><script src=\"https:\/\/gist.github.com\/batmask\/9075682627437d3942f9e2258abc3736.js\"><\/script><noscript><a href=\"https:\/\/gist.github.com\/batmask\/9075682627437d3942f9e2258abc3736\">View this gist on GitHub<\/a><\/noscript><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ub108\ubb34 \uc624\ub7ab\ub9cc\uc5d0 SQL \uc0ac\uc6a9\ud558\ub824\ub2c8 \ud558\ub098\ub3c4 \uae30\uc5b5\uc774 \ub098\uc9c8 \uc54a\uc558\ub2e4. \uc548\ub4dc\ub85c\uc774\ub4dc\ub098 \uc2f1\uae00 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub9ce\uc774 \uc4f0\uc774\ub294 sqlite3\uc640 mySQL \ud638\ud658 DB\uc778 mariaDB\ub97c \uc124\uce58\ud574\uc11c \uac00\uc7a5 \uac04\ub2e8\ud55c \ub3d9\uc791\ub4e4\uc744 \ud14c\uc2a4\ud2b8\ud574 \ubd24\ub2e4. \ud14c\uc774\ube14 \uc0dd\uc131, \ub808\ucf54\ub4dc \ucd94\uac00(INSERT), \uc77d\uae30(SELECT), \uc218\uc815(UPDATE), \uc0ad\uc81c(DELETE). \uac04\ub2e8\ud55c \uad6c\ubb38\ub4e4\uc740 sqlite3\uc640 mySQL \uad6c\ubd84\uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc904 \uc54c\uc558\ub294\ub370, \ubbf8\ubb18\ud558\uac8c \ub2ec\ub77c \uc0b4\uc9dd \ub2f9\ud669\ud588\ub2e4. \uc608\ub85c sqlite3\uc5d0\uc11c AUTOINCREMENT \uac00 mySQL\uc5d0\uc120 AUTO_INCREMENT\ub85c \uc4f0\uace0, PRIMARY KEY\ub3c4 sqlite3\ub294 \ud56d\ubaa9\uc5d0 \uba85\uc2dc\ud574 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[66,65,35,63,64,137,55],"class_list":["post-211","post","type-post","status-publish","format-standard","hentry","category-python","tag-mariadb","tag-mysql","tag-python","tag-sql","tag-sqlite3","tag-database-kr","tag-python-kr"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/comments?post=211"}],"version-history":[{"count":3,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/211\/revisions"}],"predecessor-version":[{"id":3417,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/211\/revisions\/3417"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=211"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}