{"id":2603,"date":"2015-12-21T00:16:30","date_gmt":"2015-12-20T16:16:30","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=2603"},"modified":"2015-12-21T00:16:30","modified_gmt":"2015-12-20T16:16:30","slug":"%e7%94%a8python%e8%bf%9b%e8%a1%8cmysql%e6%93%8d%e4%bd%9c","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/2603.html","title":{"rendered":"\u7528Python\u8fdb\u884cMySQL\u64cd\u4f5c"},"content":{"rendered":"<p>=Start=<\/p>\n<h5>\u7f18\u7531\uff1a<\/h5>\n<p>\u6700\u8fd1\u5728\u590d\u4e60Python\u7684\u76f8\u5173\u77e5\u8bc6\u65f6\u78b0\u5230\u7684\u8001\u95ee\u9898\u7684\u65b0\u89e3\u6cd5\uff0c\u89c9\u5f97\u53ef\u4ee5\u8bb0\u5f55\u4e00\u4e0b\u3002<\/p>\n<h5>\u53c2\u8003\u89e3\u7b54\uff1a<\/h5>\n<h6>Python Database API<\/h6>\n<ul>\n<li><a href=\"https:\/\/wiki.python.org\/moin\/MySQL\" target=\"_blank\">https:\/\/wiki.python.org\/moin\/MySQL<\/a><\/li>\n<li><a href=\"https:\/\/www.python.org\/dev\/peps\/pep-0249\/\" target=\"_blank\">https:\/\/www.python.org\/dev\/peps\/pep-0249\/<\/a><\/li>\n<\/ul>\n<h6>MySQLdb\u7684\u5b89\u88c5(\u5728MySQL Server\u4e3aPercona\u7684\u60c5\u51b5\u4e0b)<\/h6>\n<pre class=\"lang:default decode:true\">$ wget https:\/\/pypi.python.org\/packages\/source\/M\/MySQL-python\/MySQL-python-1.2.5.zip\n$ unzip MySQL-python-1.2.5.zip\n$ cd MySQL-python-1.2.5\n$ sudo \/usr\/local\/bin\/python setup.py install\n...\nEnvironmentError: mysql_config not found\n...\n\n$ history | grep -i 'Percona-Server'\nsudo yum install Percona-Server-server-55.x86_64 percona-toolkit\n\n$ sudo yum install Percona-Server-devel-55.x86_64\n$ sudo find \/usr -type f -iname \"mysql_config\"\n$ sudo \/usr\/local\/bin\/python setup.py install<\/pre>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/372885\/how-do-i-connect-to-a-mysql-database-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/372885\/how-do-i-connect-to-a-mysql-database-in-python<\/a><\/li>\n<li><a href=\"http:\/\/mysql-python.sourceforge.net\/MySQLdb.html\" target=\"_blank\">http:\/\/mysql-python.sourceforge.net\/MySQLdb.html<\/a><\/li>\n<li><a href=\"http:\/\/zetcode.com\/db\/mysqlpython\/\" target=\"_blank\">http:\/\/zetcode.com\/db\/mysqlpython\/<\/a><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# coding=utf-8\n\nimport MySQLdb\n\nclass MysqlDB(object):\n    def __init__(self, host='127.0.0.1', port=3306, user='', passwd=''):\n        self.conn = MySQLdb.connect(host=host, port=port, user=user, passwd=passwd, charset='utf8')\n        self.cur = self.conn.cursor()\n\n    def query(self, sql_str):\n        ret_tuple = None\n        try:\n            self.cur.execute(sql_str)\n            ret_tuple = self.cur.fetchall()\n            self.conn.commit()\n        except MySQLdb.Error as e:\n            print \"Mysql Error %d: %s\" % (e.args[0], e.args[1])\n        return ret_tuple\n\n    def safe_query(self, mode, param_tuple):\n        ret_tuple = None\n        try:\n            self.cur.execute(mode, param_tuple)\n            ret_tuple = self.cur.fetchall()\n            self.conn.commit()\n        except MySQLdb.Error as e:\n            print \"Mysql Error %d: %s\" % (e.args[0], e.args[1])\n        return ret_tuple\n\n    def update(self, sql_str):\n        try:\n            self.cur.execute(sql_str)\n            self.conn.commit()\n        except MySQLdb.Error as e:\n            self.conn.rollback()\n            print \"Mysql Error %d: %s\" % (e.args[0], e.args[1])\n\n    def safe_update(self, mode, param_tuple):\n        try:\n            self.cur.execute(mode, param_tuple)\n            self.conn.commit()\n        except MySQLdb.Error as e:\n            self.conn.rollback()\n            print \"Mysql Error %d: %s\" % (e.args[0], e.args[1])\n<\/pre>\n<h6>MySQL\u5b98\u65b9\u4e5f\u63a8\u51fa\u4e86Python\u7248\u7684Connector<\/h6>\n<ul>\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/connector-python\/en\/\" target=\"_blank\">https:\/\/dev.mysql.com\/doc\/connector-python\/en\/<\/a><\/li>\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/connector-python\/en\/connector-python-example-connecting.html\" target=\"_blank\">https:\/\/dev.mysql.com\/doc\/connector-python\/en\/connector-python-example-connecting.html<\/a><\/li>\n<\/ul>\n<p>=EOF=<\/p>\n","protected":false},"excerpt":{"rendered":"<p>=Start= \u7f18\u7531\uff1a \u6700\u8fd1\u5728\u590d\u4e60Python\u7684\u76f8\u5173\u77e5\u8bc6\u65f6\u78b0\u5230\u7684\u8001\u95ee\u9898\u7684\u65b0\u89e3\u6cd5\uff0c\u89c9\u5f97\u53ef\u4ee5\u8bb0\u5f55\u4e00\u4e0b\u3002 \u53c2\u8003\u89e3\u7b54\uff1a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,23,7],"tags":[16,370,8],"class_list":["post-2603","post","type-post","status-publish","format-standard","hentry","category-database","category-knowledgebase-2","category-programing","tag-mysql","tag-mysqldb","tag-python"],"views":6471,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=2603"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2603\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=2603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=2603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=2603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}