{"id":3250,"date":"2013-06-27T10:23:05","date_gmt":"2013-06-27T01:23:05","guid":{"rendered":"http:\/\/apollo89.com\/wordpress\/?p=3250"},"modified":"2013-09-13T08:45:00","modified_gmt":"2013-09-12T23:45:00","slug":"%eb%b9%a0%eb%a5%b4%ea%b2%8c-%ed%99%9c%ec%9a%a9%ed%95%98%eb%8a%94-%ed%8c%8c%ec%9d%b4%ec%8d%ac-3-2-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%98%eb%b0%8d-14%ec%9e%a5-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0","status":"publish","type":"post","link":"https:\/\/apollo89.com\/wordpress\/?p=3250","title":{"rendered":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><strong>Notice : \ud574\ub2f9 \uc790\ub8cc\uac00 \uc800\uc791\uad8c\ub4f1\uc5d0 \uc758\ud574\uc11c \ubb38\uc81c\uac00 \uc788\ub2e4\uba74 \ubc14\ub85c \uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n<p><a href=\"http:\/\/blog.yes24.com\/lib\/adon\/View.aspx?blogid=2223538&#038;goodsno=6687985&#038;idx=16104&#038;ADON_TYPE=B&#038;regs=b\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/apollo89.com\/wordpress\/wp-content\/uploads\/2013\/05\/\ube60\ub974\uac8c-\ud65c\uc6a9\ud558\ub294-\ud30c\uc774\uc36c-3.2-\ud504\ub85c\uadf8\ub798\ubc0d-.jpeg\" alt=\"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d\" width=\"314\" height=\"400\" class=\"alignnone size-full wp-image-2296\" srcset=\"https:\/\/apollo89.com\/wordpress\/wp-content\/uploads\/2013\/05\/\ube60\ub974\uac8c-\ud65c\uc6a9\ud558\ub294-\ud30c\uc774\uc36c-3.2-\ud504\ub85c\uadf8\ub798\ubc0d-.jpeg 314w, https:\/\/apollo89.com\/wordpress\/wp-content\/uploads\/2013\/05\/\ube60\ub974\uac8c-\ud65c\uc6a9\ud558\ub294-\ud30c\uc774\uc36c-3.2-\ud504\ub85c\uadf8\ub798\ubc0d--235x300.jpeg 235w\" sizes=\"auto, (max-width: 314px) 100vw, 314px\" \/><\/a><br \/>\n<a href=\"http:\/\/blog.yes24.com\/lib\/adon\/View.aspx?blogid=2223538&#038;goodsno=6687985&#038;idx=16104&#038;ADON_TYPE=B&#038;regs=b\" target=\"_blank\">[\uad6c\ub9e4\ud558\uae30]<\/a><\/p>\n<p><a href=\"http:\/\/apollo89.com\/wordpress\/?p=2262\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 1\uc7a5 \ud30c\uc774\uc36c \uac1c\uc694 \ubc0f \uc124\uce58, 2\uc7a5 \uc790\ub8cc\ud615 \ubc0f \uc5f0\uc0b0\uc790<\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2406\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 3\uc7a5 \ud568\uc218<\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2409\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 4\uc7a5 \uc81c\uc5b4<\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2411\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 5\uc7a5 \ud074\ub798\uc2a4 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2439\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 6\uc7a5 \ubaa8\ub4c8 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2666\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 7\uc7a5 \uc608\uc678\ucc98\ub9ac <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=2927\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 8\uc7a5 \uc785\ucd9c\ub825 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=3102\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 10\uc7a5 \ubb38\uc790\uc5f4\uc774\uc57c\uae30 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=3108\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 11\uc7a5 \ub0a0\uc9dc\uc774\uc57c\uae30 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=3231\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 12\uc7a5 \uc22b\uc790\uc774\uc57c\uae30 <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=3247\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 13\uc7a5 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc744 \uc790\uc720\uc790\uc7ac\ub85c <\/a><br \/>\n<a href=\"http:\/\/apollo89.com\/wordpress\/?p=3250\" target=\"_blank\">\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a><\/p>\n<p>\u25a3 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/p>\n<p>SQLite3 \uc740 \ub514\uc2a4\ud06c \uae30\ubc18\uc758 \uac00\ubcbc\uc6b4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac<br \/>\n\ud2b8\ub80c\uc81d\uc158 \uc9c0\uc6d0, \uc131\ub2a5\uacfc \uc548\uc815\uc131 \uac80\uc99d(\uc548\ub4dc\ub85c\uc774\ub4dc, \uc544\uc774\ud3f0 \ub4f1 \ub110\ub9ac\uc0ac\uc6a9)<br \/>\npysqlite \ubaa8\ub4c8, \uae30\ubd84\uc801\uc73c\ub85c \ud3ec\ud568<\/p>\n<p>\ubaa8\ub4c8\ud568\uc218<br \/>\n&#8211; sqlite3.connect(database[, timeout, detect_types, isolation_level, check_same_thread, &#8211; factory, cached_statements]) : SQLite3 DB\uc640 \uc5f0\uacb0\ub41c Connection \uac1d\uccb4\ubc18\ud658<br \/>\n&#8211; sqlite3.complete_statement(sql) : \uc138\ubbf8\ucf5c\ub860\uc73c\ub85c \ub05d\ub098\ub294 sql \ubb38\uc5d0 \ub300\ud574 True\ub97c \ubc18\ud658(\uad6c\ubb38\ud655\uc778\uc740 \uc548\ud568)<br \/>\n&#8211; sqlite3.register_converter(typename, callable) : SQLite3\uc5d0 \uc800\uc7a5\ub41c \uc790\ub8cc\ub97c \uc0ac\uc6a9\uc790 \uc815\uc758 \uc790\ub8cc\ud615\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ud568\uc218\ub97c \ub4f1\ub85d<\/p>\n<p>Connection \ud074\ub798\uc2a4 : \uc5f0\uacb0\ub41c DB\uc751 \ub3d9\uc791<br \/>\n&#8211; cursor([cursorClass]) : cursor \uac1d\uccb4\ub97c \uc0dd\uc131<br \/>\n&#8211; commit() : \ud2b8\ub80c\uc81d\uc158\uc758 \ubcc0\uacbd\ub0b4\uc6a9\uc744 DB\uc5d0 \ubc18\uc601<br \/>\n&#8211; rollback() : \ud2b8\ub80c\uc81d\uc158\uc758 \ubcc0\uacbd\ub0b4\uc6a9\uc744 DB\uc5d0 \ubc18\uc601\ud558\uc9c0 \uc54a\uc74c<br \/>\n&#8211; close() : DB  \uc5f0\uacb0\uc744 \uc885\ub8cc<br \/>\n&#8211; isolation_level : \ud2b8\ub80c\uc81d\uc158 \uacbd\ub9ac\uc218\uc900\uc744 \ud655\uc778, \uc124\uc815<br \/>\n&#8211; execute(sql[, parameters]) : \uc784\uc2dc cursor \uac1d\uccb4\uc5d0 sql \ubb38\uc744 \uc2e4\ud589<br \/>\n&#8211; executemany(sql[, parameters]) : \uc784\uc2dc cursor \uac1d\uccb4\uc5d0 \ub3d9\uc77c\ud55c sql \ubb38\uc5d0 \ud30c\ub77c\ubbf8\ud130\ub97c \ubcc0\uacbd\ud558\uc5ec \uc2e4\ud589<br \/>\n&#8211; executescript(sql_script) : \uc784\uc2dc cursor \uac1d\uccb4\uc5d0 \uc138\ubbf8\ucf5c\ub860\uc73c\ub85c \uad6c\ubd84\ub41c \uc5ec\ub7ec\uc904\uc758 sql \ubb38\uc744 \uc2e4\ud589<br \/>\n&#8211; create_aggregate(name, num_params, aggregate_class) : \uc0ac\uc6a9\uc790 \uc815\uc758 \uc9d1\uacc4\ud568\uc218\ub97c \uc0dd\uc131<br \/>\n&#8211; create_collation(name, callable) : \ubb38\uc790\uc5f4 \uc815\ub82c\uc2dc sql \uc5d0\uc11c \uc0ac\uc6a9\ud558\ub420 \uc774\ub984(name)\uacfc \uc815\ub82c\ud568\uc218\ub97c \uc9c0\uc815<br \/>\n&#8211; iterdump() : \uc5f0\uacb0\ub41c DB\uc758 \ub0b4\uc6a9\uc744 sQL \uc9c8\uc758 \ud604\ud0dc\ub85c \ucd9c\ub825\ud560\uc218 \uc788\ub294 \uc774\ud130\ub808\uc774\ud130\ub97c \ubc18\ud658<\/p>\n<p>Cursor \ud074\ub798\uc2a4 : \uc2e4\uc81c\uc801\uc73c\ub85c DB\uc758 sql \uad6c\ubb38\uc744 \uc2e4\ud589\uc2dc\ud0a4\uace0 \uc870\ud68c\ub41c \uacb0\uacfc\ub97c \uac00\uc838\uc634<br \/>\n&#8211; execute(sql[, parameters]) : cursor \uac1d\uccb4\uc5d0 sql \ubb38\uc744 \uc2e4\ud589<br \/>\n&#8211; executemany(sql[, parameters]) : cursor \uac1d\uccb4\uc5d0 \ub3d9\uc77c\ud55c sql \ubb38\uc5d0 \ud30c\ub77c\ubbf8\ud130\ub97c \ubcc0\uacbd\ud558\uc5ec \uc2e4\ud589<br \/>\n&#8211; executescript(sql_script) : cursor \uac1d\uccb4\uc5d0 \uc138\ubbf8\ucf5c\ub860\uc73c\ub85c \uad6c\ubd84\ub41c \uc5ec\ub7ec\uc904\uc758 sql \ubb38\uc744 \uc2e4\ud589<br \/>\n&#8211; fetchone() : \uc870\ud68c\ub41c \uacb0\uacfc\ub85c \ubd80\ud130 \ub370\uc774\ud130 1\uac1c\ub97c \ubc18\ud658<br \/>\n&#8211; fetchmany(size=cursor.arraysize) : \uc870\ud68c\ub41c \uacb0\uacfc\ub85c \ubd80\ud130 \uc785\ub825\ubc1b\uc740 size \ub9cc\ud07c\uc758 \ub370\uc774\ud130 \ub9ac\uc2a4\ud2b8\ub97c \ubc18\ud658<br \/>\n&#8211; fetchall() : \uc870\ud68c\ub41c \uacb0\uacfc \ubaa8\ub450\ub97c \ub9ac\uc2a4\ud2b8\ud615\ud0dc\ub85c \ubc18\ud658<\/p>\n<p>Row \ud074\ub798\uc2a4 : \uc870\ud68c\ub41c \uacb0\uacfc \uc9d1\ud569\uc5d0\uc11c \ud29c\ud50c\uc744 \ub098\ud0c0\ub0c4<\/p>\n<p>14.1\t\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0<\/p>\n<pre class=\"lang:python decode:true \" >import sqlite3\r\ncon = sqlite3.connect(\"test.db\")<\/pre>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uac1d\uccb4\ub97c \uc0dd\uc131, DB \uac00 \uc5c6\uc73c\uba74, \uc0c8\ub85c \uc0dd\uc131, \uc788\uc73c\uba74 \uc624\ud508<\/p>\n<p>14.2\tSQL\ubb38 \uc218\ud589<\/p>\n<pre class=\"lang:python decode:true \" >import sqlite3\r\ncon = sqlite3.connect(\"test.db\")\r\ncur = con.cursor()\r\ncur.execute(\"insert into test value(?,?);\", (name, number))<\/pre>\n<p>? \ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc804\ub2ec\uc21c\uc11c\ub97c \uae30\uc5b5\ud574 \uac70\uae30\uc5d0 \ub9de\ucdb0 \uc2dc\ud000\uc2a4 \uac1d\uccb4\ub97c \uc804\ub2ec<\/p>\n<pre class=\"lang:python decode:true \" >cur.execute(\"insert into test value(:test_name, :test_num);\", (\"test_name\":name, \"test_num\":number))<\/pre>\n<p>\uc0ac\uc804\ud615\uc2dd\uc73c\ub85c \uc804\ub2ec<\/p>\n<pre class=\"lang:python decode:true \" >datalist = (('apollo89', '123'), ('test', '111'))\r\ncur.executemany(\"insert into test value(?, ?);\", datalist)<\/pre>\n<p>\ub9ac\uc2a4\ud2b8 \uac1d\uccb4\ub97c \uc774\uc6a9\ud574 \ub808\ucf54\ub4dc\ub97c \uc5f0\uc18d\uc73c\ub85c \uc785\ub825<\/p>\n<p>14.3\t\ub808\ucf54\ub4dc \uc870\ud68c<\/p>\n<pre class=\"lang:python decode:true \" >cur.execute(\"select * from test;\")\r\nfor row in cur :\r\n\tprint(row)\r\ncur.fetchone()\r\ncur.fetchmany(2)<\/pre>\n<p>14.4\t\ud2b8\ub79c\uc7ad\uc158 \ucc98\ub9ac<br \/>\ncon.commit() \uc785\ub825<br \/>\n\uc790\ub3d9\ucee4\ubc0b \ubaa8\ub4dc : con.isolatoin_level = None<\/p>\n<p>14.5\t\ub808\ucf54\ub4dc \uc815\ub82c\uacfc \uc0ac\uc6a9\uc790 \uc815\ub82c \ud568\uc218<\/p>\n<pre class=\"lang:python decode:true \" >def userOrdef(s1,s2) : \r\n\tpass\r\n\r\ncreate_collation('myorder', userOrdef)\r\ncur.execute(\"select * from test order by name collate myorder\")<\/pre>\n<p>14.6\tSQLite3 \ub0b4\uc7a5 \uc9d1\uacc4 \ud568\uc218<br \/>\nsqlite \uc5d0\uc11c \uc0ac\uc6a9\ud560\uc218 \uc788\ub294 \ub0b4\uc7a5 \uc9d1\uacc4\ud568\uc218<br \/>\nabs(x), length(x), lower(x), upper(x), min(x), max(x), ramdom(*), count(x), count(*), sum(x)<\/p>\n<p>14.7\t\uc0ac\uc6a9\uc790\uc815\uc758 \uc9d1\uacc4 \ud568\uc218<br \/>\n\uc0ac\uc6a9\uc790\uc815\uc758 \uc9d1\uacc4\ud568\uc218\ub97c \ub9cc\ub4dc\uace0\uc790 \ud560\ub54c : create_aggregate() \uc0ac\uc6a9\ud574\uc11c \ud074\ub798\uc2a4\ub97c \ub4f1\ub85d<br \/>\n\ud074\ub798\uc2a4\ub294 \ubc18\ub4dc\uc2dc step() \uacfc finalize() \uba54\uc18c\ub4dc\uac00 \uc815\uc758\ub418\uc5b4\uc788\uc5b4\uc57c \ud568<br \/>\n&#8211; step() : \uba54\uc18c\ub4dc \ub4f1\ub85d\uc2dc \uc9c0\uc815\ub41c \uac1c\uc218\uc778 \uc778\uc790\ub97c \uc804\ub2ec \ubc1b\uc74c<br \/>\n&#8211; finalize() : \uc9d1\uacc4\ub41c \uacb0\uacfc\ub97c \ubc18\ud658<\/p>\n<p>14.8\t\uc790\ub8cc\ud615<br \/>\nSQLite3 : Python<br \/>\nNULL : None<br \/>\nINTEGER : int<br \/>\nREAL : float<br \/>\nTEXT : str, bytes<br \/>\nBLOB : buffer<\/p>\n<p>14.9\t\uc0ac\uc6a9\uc790\uc815\uc758 \uc790\ub8cc\ud615<br \/>\n&#8211; sqlite3.register_adapter(\ud30c\uc774\uc36c \uc790\ub8cc\ud615, \ubcc0\ud658\ud568\uc218)<br \/>\n&#8211; sqlite3.register_converter(sqllite3 \uc790\ub8cc\ud615, \ubcc0\ud658\ud568\uc218)<\/p>\n<pre class=\"lang:python decode:true \" ># -*- coding: cp949 -*-\r\nclass Point(object):   \r\n    def __init__(self, x, y):\r\n        self.x, self.y = x, y\r\n\r\n    def __repr__(self):             # Point \uac1d\uccb4\uc758 \ub0b4\uc6a9 \ucd9c\ub825     \r\n        return \"Point(%f, %f)\" % (self.x, self.y)\r\n\r\nimport sqlite3\r\ndef PointAdapter(point):                # \ud074\ub798\uc2a4 \uac1d\uccb4\uc5d0\uc11c SQLite3 \uc785\ub825 \uac00\ub2a5\ud55c \uc790\ub8cc\ud615\uc73c\ub85c \ubcc0\ud658      \r\n    return \"%f:%f\" % (point.x, point.y)\r\n\r\ndef PointConverter(s):                  # SQLite3\uc5d0\uc11c \uc870\ud68c\ud55c \uacb0\uacfc\ub97c \ud074\ub798\uc2a4 \uac1d\uccb4\ub85c \ubcc0\ud658 \r\n    x, y = list(map(float, s.decode().split(\":\")))\r\n    return Point(x, y)\r\n\r\nsqlite3.register_adapter(Point, PointAdapter)          # \ud074\ub798\uc2a4 \uc774\ub984\uacfc \ubcc0\ud658 \ud568\uc218 \ub4f1\ub85d\r\nsqlite3.register_converter(\"point\", PointConverter)    # SQL \uad6c\ubb38\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc790\ub8cc\ud615 \uc774\ub984\uacfc \ubcc0\ud658\ud568\uc218 \ub4f1\ub85d\r\n\r\np = Point(4, -3.2)           # \uc785\ub825\ud560 \ub370\uc774\ud130(\ud30c\uc774\uc36c \ud074\ub798\uc2a4 \uac1d\uccb4)\r\np2 = Point(-1.4, 6.2)\r\n\r\n# \uc554\ubb35\uc801\uc73c\ub85c \uc120\uc5b8\ub41c \uc790\ub8cc\ud615\uc73c\ub85c \uc870\ud68c\ud558\ub3c4\ub85d \uc124\uc815  \r\ncon = sqlite3.connect(\":memory:\", detect_types=sqlite3.PARSE_DECLTYPES)\r\ncur = con.cursor()\r\ncur.execute(\"create table test(p point)\")             # point \uc790\ub8cc\ud615\uc744 \uc774\uc6a9\ud558\uc5ec \ud14c\uc774\ube14 \uc0dd\uc131\r\n\r\ncur.execute(\"insert into test values (?)\", (p, ))     # point \ub808\ucf54\ub4dc \uc785\ub825\r\ncur.execute(\"insert into test(p) values (?)\", (p2,))\r\n\r\ncur.execute(\"select p from test\")    # \ud14c\uc774\ube14 \uc870\ud68c \r\nprint([r[0] for r in cur])           \r\ncur.close()\r\ncon.close()<\/pre>\n<p>14.10 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub364\ud504 \ub9cc\ub4e4\uae30<br \/>\nDB\uc758 \ud604\uc7ac \uc0c1\ud0dc\ub97c \ubc31\uc5c5(sql)<\/p>\n<pre class=\"lang:python decode:true \" >import sqlite3\r\ncon = sqlite3.connect(\":memory:\")\r\ncur = con.cursor()\r\n\r\ncur.execute(\"CREATE TABLE PhoneBook(Name text, PhoneNum text);\")\r\ncur.execute(\"INSERT INTO PhoneBook VALUES('Derick', '010-1234-5678');\")\r\nlist = (('Tom', '010-543-5432'), ('DSP', '010-123-1234'))\r\ncur.executemany(\"INSERT INTO PhoneBook VALUES(?, ?);\", list)\r\n\r\nfor l in con.iterdump():\r\n    print(l)<\/pre>\n<p>14.11 \uba85\ub839\uc5b4 \ud504\ub86c\ud504\ud2b8\uc5d0\uc11c SQLite3 \uad00\ub9ac\ud558\uae30<\/p>\n<pre class=\"lang:python decode:true \" ># -*- coding: cp949 -*-\r\nimport sqlite3\r\nimport sys\r\nimport re\r\n\r\n# \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uacbd\ub85c \uc124\uc815 \r\nif len(sys.argv) == 2:\r\n\tpath = sys.argv[1]\r\nelse:\r\n\tpath = \":memory:\"\r\n\r\ncon = sqlite3.connect(path)\r\ncon.isolation_level = None\t# \ud2b8\ub79c\uc7ad\uc158\uc5c6\uc774 \uc790\ub3d9 \ucee4\ubc0b\uc774 \ub418\ub3c4\ub85d \uc124\uc815\r\ncur = con.cursor()\r\n\r\nbuffer = \"\"\t\t\t# \ucffc\ub9ac \ubc84\ud37c \r\n\r\ndef PrintIntro():\r\n\t\"\ud504\ub85c\uadf8\ub7a8 \uc778\ud2b8\ub85c \uba54\uc138\uc9c0\"\r\n\tprint(\"pysqlite\uc758 command \ud504\ub85c\uadf8\ub7a8\uc785\ub2c8\ub2e4.\")\r\n\tprint(\"\ud2b9\uc218 \uba85\ub839\uc5b4\ub97c \uc54c\uace0 \uc2f6\uc73c\uc2dc\uba74 '.help;'\ub97c \uc785\ub825\ud558\uc138\uc694.\")\r\n\tprint(\"SQL \uad6c\ubb38\uc740 ';'\uc73c\ub85c \ub05d\ub098\uc57c \ud569\ub2c8\ub2e4.\")\r\n\r\ndef PrintHelp():\r\n\t\"\ub3c4\uc6c0\ub9d0\"\r\n\tprint(\".dump\\t\\t\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ub0b4\uc6a9\uc744 \ub364\ud504\ud569\ub2c8\ub2e4.\")\r\n\r\ndef SQLDump(con, file=None):\r\n\t\"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub0b4\uc6a9 \ub364\ud504\"\r\n\tif file != None:\r\n\t\tf = open(file, \"w\")\r\n\telse:\r\n\t\tf = sys.stdout\r\n\r\n\tfor l in con.iterdump():\r\n\t\tf.write(\"{0}\\n\".format(l))\r\n\r\n\tif f != sys.stdout:\r\n\t\tf.close()\r\n\r\nPrintIntro()\t\t# \uc778\ud2b8\ub85c \uba54\uc138\uc9c0 \ucd9c\ub825\r\n\r\nwhile True:\r\n\tline = input(\"pysqlite&gt;&gt; \")\t\t# \uba85\ub839\uc5b4 \uc785\ub825\r\n\tif buffer == \"\" and line == \"\":\r\n\t\tbreak;\r\n\tbuffer += line\r\n\t\r\n\tif sqlite3.complete_statement(buffer):\t\t# ';'\uc73c\ub85c \uad6c\ubb38\uc774 \ub05d\ub098\ub294\uc9c0 \uac80\uc0ac\r\n\t\tbuffer = buffer.strip()\r\n\r\n\t\tif buffer[0]==\".\":\t\t# \ud2b9\uc218 \uba85\ub839\uc5b4\uc778 \uacbd\uc6b0\r\n\t\t\tcmd = re.sub('[ ;]', ' ', buffer).split()\r\n\t\t\tif cmd[0] == '.help':\r\n\t\t\t\tPrintHelp()\r\n\t\t\telif cmd[0] == '.dump':\r\n\t\t\t\tif len(cmd) == 2:\r\n\t\t\t\t\tSQLDump(con, cmd[1])\r\n\t\t\t\telse:\r\n\t\t\t\t\tSQLDump(con)\r\n\t\telse:\t\t\t\t\t# \uc77c\ubc18 SQL \uad6c\ubb38\uc778 \uacbd\uc6b0\r\n\t\t\ttry:\r\n\t\t\t\tbuffer = buffer.strip()\r\n\t\t\t\tcur.execute(buffer)\r\n\r\n\t\t\t\tif buffer.lstrip().upper().startswith(\"SELECT\"):\t# SELECT \uc9c8\uc758\uc778 \uacbd\uc6b0\r\n\t\t\t\t\tprint(cur.fetchall())\r\n\t\t\texcept sqlite3.Error as e:\r\n\t\t\t\tprint(\"Error: \", e.args[0])\r\n\t\t\telse:\r\n\t\t\t\tprint(\"\uad6c\ubb38\uc774 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\") \r\n\t\tbuffer=\"\"\t\t# \uc785\ub825 \ubc84\ud37c \ucd08\uae30\ud654\r\ncon.close()\r\nprint(\"\ud504\ub85c\uadf8\ub7a8\uc744 \uc885\ub8cc\ud569\ub2c8\ub2e4. \uc57c\uc639~\")<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Notice : \ud574\ub2f9 \uc790\ub8cc\uac00 \uc800\uc791\uad8c\ub4f1\uc5d0 \uc758\ud574\uc11c \ubb38\uc81c\uac00 \uc788\ub2e4\uba74 \ubc14\ub85c \uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\ub2e4. [\uad6c\ub9e4\ud558\uae30] \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 1\uc7a5 \ud30c\uc774\uc36c \uac1c\uc694 \ubc0f \uc124\uce58, 2\uc7a5 \uc790\ub8cc\ud615 \ubc0f \uc5f0\uc0b0\uc790 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 3\uc7a5 \ud568\uc218 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &hellip; <a href=\"https:\/\/apollo89.com\/wordpress\/?p=3250\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[663,658],"tags":[236,1158,140],"class_list":["post-3250","post","type-post","status-publish","format-standard","hentry","category-python-","category-book-2","tag-236","tag-1158","tag-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/apollo89.com\/wordpress\/?p=3250\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Notice : \ud574\ub2f9 \uc790\ub8cc\uac00 \uc800\uc791\uad8c\ub4f1\uc5d0 \uc758\ud574\uc11c \ubb38\uc81c\uac00 \uc788\ub2e4\uba74 \ubc14\ub85c \uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\ub2e4. [\uad6c\ub9e4\ud558\uae30] \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 1\uc7a5 \ud30c\uc774\uc36c \uac1c\uc694 \ubc0f \uc124\uce58, 2\uc7a5 \uc790\ub8cc\ud615 \ubc0f \uc5f0\uc0b0\uc790 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 3\uc7a5 \ud568\uc218 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/apollo89.com\/wordpress\/?p=3250\" \/>\n<meta property=\"og:site_name\" content=\"Apollo89.com\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-27T01:23:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-09-12T23:45:00+00:00\" \/>\n<meta name=\"author\" content=\"apollo89\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"apollo89\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250\"},\"author\":{\"name\":\"apollo89\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\"},\"headline\":\"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4\",\"datePublished\":\"2013-06-27T01:23:05+00:00\",\"dateModified\":\"2013-09-12T23:45:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250\"},\"wordCount\":199,\"commentCount\":0,\"keywords\":[\"\ub3c5\uc11c\",\"\uc2a4\ud130\ub514\",\"\ud30c\uc774\uc36c\"],\"articleSection\":[\"Python\\\/Ruby\\\/Perl\",\"Reading\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250\",\"name\":\"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2013-06-27T01:23:05+00:00\",\"dateModified\":\"2013-09-12T23:45:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=3250#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\\\/\\\/apollo89.com\\\/wordpress\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/\",\"name\":\"Apollo89.com\",\"description\":\"\uc544\ud3f4\ub85c\uc528\uc758 \uc7a1\ub2e4\ud55c \uacbd\ud5d8\ub4e4..\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\",\"name\":\"apollo89\",\"description\":\"\uc544\ud3f4\ub85c89 \uc785\ub2c8\ub2e4.\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/apollo89.com\/wordpress\/?p=3250","og_locale":"ko_KR","og_type":"article","og_title":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com","og_description":"&nbsp; Notice : \ud574\ub2f9 \uc790\ub8cc\uac00 \uc800\uc791\uad8c\ub4f1\uc5d0 \uc758\ud574\uc11c \ubb38\uc81c\uac00 \uc788\ub2e4\uba74 \ubc14\ub85c \uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\ub2e4. [\uad6c\ub9e4\ud558\uae30] \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 1\uc7a5 \ud30c\uc774\uc36c \uac1c\uc694 \ubc0f \uc124\uce58, 2\uc7a5 \uc790\ub8cc\ud615 \ubc0f \uc5f0\uc0b0\uc790 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 3\uc7a5 \ud568\uc218 \ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &hellip; Continue reading &rarr;","og_url":"https:\/\/apollo89.com\/wordpress\/?p=3250","og_site_name":"Apollo89.com","article_published_time":"2013-06-27T01:23:05+00:00","article_modified_time":"2013-09-12T23:45:00+00:00","author":"apollo89","twitter_card":"summary_large_image","twitter_misc":{"\uae00\uc4f4\uc774":"apollo89","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/apollo89.com\/wordpress\/?p=3250#article","isPartOf":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=3250"},"author":{"name":"apollo89","@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82"},"headline":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4","datePublished":"2013-06-27T01:23:05+00:00","dateModified":"2013-09-12T23:45:00+00:00","mainEntityOfPage":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=3250"},"wordCount":199,"commentCount":0,"keywords":["\ub3c5\uc11c","\uc2a4\ud130\ub514","\ud30c\uc774\uc36c"],"articleSection":["Python\/Ruby\/Perl","Reading"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/apollo89.com\/wordpress\/?p=3250#respond"]}]},{"@type":"WebPage","@id":"https:\/\/apollo89.com\/wordpress\/?p=3250","url":"https:\/\/apollo89.com\/wordpress\/?p=3250","name":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d - 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 - Apollo89.com","isPartOf":{"@id":"https:\/\/apollo89.com\/wordpress\/#website"},"datePublished":"2013-06-27T01:23:05+00:00","dateModified":"2013-09-12T23:45:00+00:00","author":{"@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82"},"breadcrumb":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=3250#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/apollo89.com\/wordpress\/?p=3250"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/apollo89.com\/wordpress\/?p=3250#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/apollo89.com\/wordpress"},{"@type":"ListItem","position":2,"name":"\ube60\ub974\uac8c \ud65c\uc6a9\ud558\ub294 \ud30c\uc774\uc36c 3.2 \ud504\ub85c\uadf8\ub798\ubc0d &#8211; 14\uc7a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4"}]},{"@type":"WebSite","@id":"https:\/\/apollo89.com\/wordpress\/#website","url":"https:\/\/apollo89.com\/wordpress\/","name":"Apollo89.com","description":"\uc544\ud3f4\ub85c\uc528\uc758 \uc7a1\ub2e4\ud55c \uacbd\ud5d8\ub4e4..","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/apollo89.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Person","@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82","name":"apollo89","description":"\uc544\ud3f4\ub85c89 \uc785\ub2c8\ub2e4.","url":"https:\/\/apollo89.com\/wordpress\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3250"}],"version-history":[{"count":0,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3250\/revisions"}],"wp:attachment":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}