{"id":641,"date":"2018-10-24T22:00:26","date_gmt":"2018-10-24T14:00:26","guid":{"rendered":"http:\/\/develop-note.com\/blog\/?p=641"},"modified":"2022-02-16T22:13:14","modified_gmt":"2022-02-16T14:13:14","slug":"2019ironman-flask-restful-day23","status":"publish","type":"post","link":"https:\/\/www.develop-note.com\/blog\/2018\/10\/24\/2019ironman-flask-restful-day23\/","title":{"rendered":"\u7b2c\u5341\u5c46\u9435\u4eba\u8cfd flask-restful DAY23-\u641e\u61c2\u5982\u4f55\u8655\u7406sqlite\u5728\u73fe\u6709\u5c08\u6848"},"content":{"rendered":"<h1>\u73fe\u6709\u5c08\u6848\u52a0\u5165sqlite<\/h1>\n<p>\u6628\u65e5\u7684\u6559\u7a0b\u6559\u6388\u5927\u5bb6\u5982\u4f55\u4f7f\u7528sqlite\u8b93\u4f7f\u7528\u8005\u8cc7\u6599\u4e0d\u518d\u662f\u5132\u5b58\u5728\u8a18\u61b6\u9ad4\u5167\uff0c\u4eca\u65e5\u8981\u6559\u6388\u5927\u5bb6\u7684\u662f\u5982\u4f55\u6574\u5408sqlite\u5230\u6211\u5011\u7684\u61c9\u7528\u7a0b\u5e8f\u5167\u3002<!--more--><\/p>\n<h2>\u622a\u81f3\u76ee\u524d\u70ba\u6b62\u7684UserModel<\/h2>\n<pre><code class=\"language-python\">\nusers = []\n\nclass UserModel:\n    name = &#039;&#039;\n    email = &#039;&#039;\n    password = &#039;&#039;\n\n    def __init__(self, name, email, password):\n        self.name = name\n        self.email = email\n        self.password = password\n\n    def add_user(self):\n        users.append(self)\n\n    @staticmethod\n    def get_user(name):\n        find = [item for item in users if item.name == name]\n        if len(find) == 0:\n            return None\n        return find[0]\n\n    @staticmethod\n    def delete_user(name):\n        global users\n        users = [item for item in users if item.name != name]\n\n    @staticmethod\n    def get_all_user():\n        return users\n<\/code><\/pre>\n<h2>\u4fee\u6539UserModel<\/h2>\n<p>\u6628\u65e5\u6559\u6388\u5927\u5bb6\u5982\u4f55insert\u5927\u6279\u4f7f\u7528\u8005\u8cc7\u6599\uff0c\u4e0d\u904e\u76ee\u524d\u4e0d\u592a\u6703\u7528\u5230\u8a72\u6307\u4ee4\uff0c\u5176\u5be6\u6bd4\u8f03\u6703\u7528\u5230\u7684\u662fexecute\uff0c\u5167\u5bb9\u4f9d\u529f\u80fd\u5225\u4ecb\u7d39\u5982\u4e0b\uff1a<\/p>\n<h3>\u65b0\u589e<\/h3>\n<pre><code class=\"language-python\">    def add_user(self):\n        conn = sqlite3.connect(&#039;user.db&#039;)\n        cursor = conn.cursor()\n        insert_query = &#039;INSERT INTO users VALUES(?, ?, ?, ?)&#039;\n        cursor.execute(insert_query, (None, self.name,\n                       self.email, self.password))\n        conn.commit()\n        conn.close()<\/code><\/pre>\n<h3>\u4fee\u6539<\/h3>\n<pre><code class=\"language-python\">    def update_user(self):\n        conn = sqlite3.connect(&#039;user.db&#039;)\n        cursor = conn.cursor()\n        update_query = &#039;UPDATE users SET name=?, email=?, password=? WHERE id=?&#039;\n        cursor.execute(update_query, (self.name,\n                                      self.email, self.password, self.id))\n        conn.commit()\n        conn.close()<\/code><\/pre>\n<h3>\u522a\u9664<\/h3>\n<pre><code class=\"language-python\">    def delete_user(name):\n        conn = sqlite3.connect(&#039;user.db&#039;)\n        cursor = conn.cursor()\n        delete_query = &#039;DELETE FROM users WHERE name=?&#039;\n        cursor.execute(delete_query, (name,))\n        conn.commit()\n        conn.close()<\/code><\/pre>\n<h3>\u67e5\u8a62<\/h3>\n<p>\u67e5\u8a62\u7684\u90e8\u5206\u53ef\u4ee5\u5206\u6210\u5169\u500b\u5167\u5bb9\u4e00\u500b\u662f\u67e5\u8a62\u55ae\u4e00\u4f7f\u7528\u8005\uff0c\u53e6\u4e00\u500b\u662f\u67e5\u8a62\u6240\u6709\u4f7f\u7528\u8005<\/p>\n<h4>\u67e5\u8a62\u55ae\u4e00\u4f7f\u7528\u8005<\/h4>\n<pre><code class=\"language-pyhton\">    def get_user(name):\n        user = None\n        conn = sqlite3.connect(&#039;user.db&#039;)\n        cursor = conn.cursor()\n        query_one_query = &#039;SELECT * FROM users WHERE name=?&#039;\n        result = cursor.execute(query_one_query, (name,)).fetchone()\n        if result is None:\n            return None\n        user = UserModel(result[1], result[2], result[3])\n        user.id = result[0]\n        conn.close()\n        return user<\/code><\/pre>\n<p>\u5176\u4e2d<code><code>fetchone()<\/code>`<code>\u5c31\u662f\u50c5\u67e5\u8a62\u4e00\u7b46\u8cc7\u6599\uff0c\u82e5\u7121\u8cc7\u6599\u5247\u6703\u8fd4\u9084<\/code>`<code>None<\/code><\/code><\/p>\n<h4>\u67e5\u8a62\u6240\u6709\u4f7f\u7528\u8005<\/h4>\n<pre><code class=\"language-python\">    def get_all_user():\n        users = []\n        conn = sqlite3.connect(&#039;user.db&#039;)\n        cursor = conn.cursor()\n        query_one_query = &#039;SELECT * FROM users&#039;\n        for item in cursor.execute(query_one_query):\n            user = UserModel(item[1], item[2], item[3])\n            user.id = item[0]\n            users.append(user)\n        conn.close()\n        return users<\/code><\/pre>\n<p>\u770b\u904e\u4e0a\u8ff0\u7684\u89e3\u8aaa\u5f8c\u8b80\u8005\u4e0d\u96e3\u767c\u73fe\u8a23\u7ac5\u5728\u65bc<code><code>execute<\/code>`<code>\u900f\u904e\u7b2c\u4e8c\u500b\u53c3\u6578\u4f86\u50b3\u905e\u53c3\u6578<\/code>`<code>(name,)<\/code>`<code>\uff0c\u4ee5\u53ca\u67e5\u8a62\u4e00\u7b46\u4f7f\u7528<\/code>`<code>fetchone()<\/code><\/code>\u9019\u5169\u90e8\u5206\u3002<\/p>\n<h2>\u4fee\u6539User\u9019\u500bResource<\/h2>\n<p>\u5728\u8655\u7406\u5b8cUserModel\u5f8c\u6211\u5011\u5728\u91dd\u5c0dUser\u9019Resource\u8abf\u6574\u4e9b\u8a31\u90e8\u5206\uff0c\u8abf\u6574\u5f8c\u7684\u7d50\u679c\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-python\">    def put(self, name):\n        result = user_schema.load(get_param())\n        if len(result.errors) &gt; 0:\n            return result.errors, 433\n\n        user = UserModel.get_user(name)\n        if not user:\n            return {\n                &#039;message&#039;: &#039;username not exist!&#039;\n            }, 403\n        user.email = result.data[&#039;email&#039;]\n        user.password = result.data[&#039;password&#039;]\n        user.update_user()\n        return {\n            &#039;message&#039;: &#039;Update user success&#039;,\n            &#039;user&#039;: user_schema.dump(user).data\n        }<\/code><\/pre>\n<p>\u6240\u4ee5\u7d93\u904e\u91cd\u69cb\u5f8c\u6211\u5011\u50c5\u9700\u8981\u8abf\u6574<code><code>put<\/code><\/code>\u7684\u505a\u6cd5\u5373\u53ef\u3002<\/p>\n<h2>\u6ce8\u610f\u4e8b\u9805<\/h2>\n<p>\u5beb\u597d\u7a0b\u5f0f\u78bc\u5f8c\u5728\u57f7\u884c\u5c08\u6848\u524d\u6709\u500b\u6ce8\u610f\u4e8b\u9805\u8981\u63d0\u9192\u5927\u5bb6\uff0c\u8acb\u5343\u842c\u6ce8\u610f\u8981\u5148CREATE TABLE\uff0c\u5426\u5247\u5f8c\u7e8c\u7684CRUD\u6703\u5931\u6557\u3002\u518d\u4f86\u5c31\u662f\u6ce8\u610fuser.db\u7684\u4f4d\u7f6e\u56e0\u70ba\u9019\u8207\u57f7\u884c\u7a0b\u5e8f\u7684\u4f4d\u7f6e\u6709\u95dc\u3002\u82e5\u662f\u6709\u6240\u4e0d\u540c\u8acb\u8a66\u8457\u8abf\u6574connect\u4f4d\u7f6e\u6216\u662fpython\u57f7\u884capp.py\u7684\u6307\u4ee4\u3002\u4ee5\u4e0a\u6ce8\u610f\u4e8b\u9805\u5f8c\u7e8c\u6703\u4f7f\u7528\u5176\u4ed6\u51fd\u5f0f\u5eab\u4f86\u6539\u5584\u3002<\/p>\n<h1>\u5c0f\u7d50<\/h1>\n<p>\u4eca\u65e5\u7684\u6559\u7a0b\u6559\u6388\u5927\u5bb6\u5982\u4f55\u5c07\u6628\u65e5\u7684sqlite\u6559\u7a0b\u61c9\u7528\u5728\u6211\u5011\u7684\u61c9\u7528\u7a0b\u5e8f\u7576\u4e2d\uff0c\u4f46\u662f\u76f4\u63a5\u4f7f\u7528\u4e0d\u662f\u90a3\u9ebc\u76f4\u89ba\uff0c\u800c\u4e14\u7a0b\u5f0f\u78bc\u53c8\u593e\u96dcSQL\u6307\u4ee4\u6240\u4ee5\u7dad\u8b77\u4e0a\u4e0d\u65b9\u4fbf\uff0c\u6240\u4ee5\u660e\u65e5\u5728\u6559\u6388\u5927\u5bb6\u5982\u4f55\u4f7f\u7528SQLALCHEMY\u4f86\u6539\u5584\u4ee5\u4e0a\u554f\u984c\uff0c\u656c\u8acb\u671f\u5f85\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73fe\u6709\u5c08\u6848\u52a0\u5165sqlite \u6628\u65e5\u7684\u6559\u7a0b\u6559\u6388\u5927\u5bb6\u5982\u4f55\u4f7f\u7528sqlite\u8b93\u4f7f\u7528\u8005\u8cc7\u6599\u4e0d\u518d\u662f\u5132\u5b58\u5728\u8a18\u61b6\u9ad4\u5167\uff0c\u4eca\u65e5\u8981\u6559\u6388\u5927 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.develop-note.com\/blog\/2018\/10\/24\/2019ironman-flask-restful-day23\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008\u7b2c\u5341\u5c46\u9435\u4eba\u8cfd flask-restful DAY23-\u641e\u61c2\u5982\u4f55\u8655\u7406sqlite\u5728\u73fe\u6709\u5c08\u6848\u3009<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[162,4,5,3,33],"class_list":["post-641","post","type-post","status-publish","format-standard","hentry","category-develop","tag-2018ironman","tag-flask","tag-flask-restful","tag-python","tag-sqlite"],"_links":{"self":[{"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/posts\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":9,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/posts\/641\/revisions"}],"predecessor-version":[{"id":2746,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/posts\/641\/revisions\/2746"}],"wp:attachment":[{"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/media?parent=641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/categories?post=641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.develop-note.com\/blog\/wp-json\/wp\/v2\/tags?post=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}