{"id":137,"date":"2016-11-27T23:19:26","date_gmt":"2016-11-27T23:19:26","guid":{"rendered":"http:\/\/python.wp.w3.pt\/?p=137"},"modified":"2016-11-28T00:10:37","modified_gmt":"2016-11-28T00:10:37","slug":"mysql-e-python","status":"publish","type":"post","link":"http:\/\/python.w3.pt\/?p=137","title":{"rendered":"MySQL e Python"},"content":{"rendered":"<p>Para usar MySQL em Python, no Linux Slackware, que \u00e9 a distribui\u00e7\u00e3o de Linux que eu uso, tive que instalar o m\u00f3dulo MySQL-python. Para Windows, Mac, ou outras distribui\u00e7\u00f5es de Linux, encontrei as instru\u00e7\u00f5es seguintes no StackOverflow:<\/p>\n<pre>\r\nFor Windows user, you can get an <a href=\"http:\/\/sourceforge.net\/project\/showfiles.php?group_id=22307\" rel=\"nofollow noreferrer\">exe of MySQLdb<\/a>.\r\n\r\nFor Linux, this is a casual package (python-mysqldb). (You can use <code>sudo apt-get install python-mysqldb<\/code> (for debian based distros), <code>yum install mysql-python<\/code> (for rpm-based), or <code>dnf install python-mysql<\/code> (for modern fedora distro) in command line to download.)\r\n\r\nFor Mac, you can <a href=\"http:\/\/stackoverflow.com\/questions\/1448429\/how-to-install-mysqldb-python-data-access-library-to-mysql-on-mac-os-x#1448476\">install MySQLdb using Macport<\/a>.\r\n<\/pre>\n<p>Para o Slackware, fui ao s\u00edtio do <a href=\"https:\/\/slackbuilds.org\/repository\/14.2\/development\/MySQL-python\/?search=MySQL-python\">SlackBuilds<\/a> e descarreguei o <a href=\"https:\/\/slackbuilds.org\/slackbuilds\/14.2\/development\/MySQL-python.tar.gz\">script de compila\u00e7\u00e3o<\/a>, assim como o <a href=\"http:\/\/pypi.python.org\/packages\/source\/M\/MySQL-python\/MySQL-python-1.2.4.zip\">c\u00f3digo fonte do MySQL-python<\/a>, que \u00e9 descarregado do s\u00edtio do Python. O script cria um pacote instal\u00e1vel.<\/p>\n<p>Criei, ent\u00e3o, um script em Python, com o c\u00f3digo seguinte, para imprimir todo o conte\u00fado de uma tabela de uma base de dados:<\/p>\n<pre>\r\n!\/usr\/bin\/python\r\nimport MySQLdb\r\n\r\ndb = MySQLdb.connect(host=\"localhost\",\r\n                     user=\"user\",\r\n                     passwd=\"pass\",\r\n                     db=\"livros\")\r\n\r\ncur = db.cursor()\r\ncur.execute(\"SELECT * FROM livro\")\r\n\r\nfor row in cur.fetchall():\r\n    row = list(map(lambda x: str(x), row))\r\n    print \", \".join(row)\r\n    #print type(row)\r\n\r\ndb.close()\r\n<\/pre>\n<p>\u00c9 aconselh\u00e1vel n\u00e3o ter as credenciais de acesso \u00e0 base de dados &#8211; username e password &#8211; dentro do ficheiro de Python. A melhor solu\u00e7\u00e3o \u00e9 guardar esses dados num ficheiro noutra pasta, e depois importar esse ficheiro (ver mais informa\u00e7\u00e3o <a href=\"http:\/\/stackoverflow.com\/questions\/22955684\/how-to-import-py-file-from-another-directory\">aqui<\/a>) sempre que for necess\u00e1rio. Eis como se importa um ficheiro em Python:<\/p>\n<pre>\r\n#!\/usr\/bin\/python\r\nimport imp\r\n\r\ndba = imp.load_source('module.dba', '\/tmp\/db\/acessobd.py')\r\n\r\nprint dba.srv, dba.usr, dba.psw\r\n<\/pre>\n<p>Para mais informa\u00e7\u00e3o e exemplos sobre o uso de MySQL em Python, nomeadamente, sobre a utiliza\u00e7\u00e3o de <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-Relational_Mapping\">ORM<\/a>s fica aqui o link de uma <a href=\"http:\/\/stackoverflow.com\/questions\/372885\/how-do-i-connect-to-a-mysql-database-in-python\">entrada no StackOverflow<\/a>.<\/p>\n<p>O \u00faltimo exemplo \u00e9 uma inser\u00e7\u00e3o numa tabela da base de dados.<\/p>\n<pre>\r\n#!\/usr\/bin\/python\r\n# -*- coding: utf-8 -*-\r\nimport MySQLdb\r\nimport imp\r\n\r\ndba = imp.load_source('module.dba', '\/tmp\/db\/acessobd.py')\r\n\r\ndb = MySQLdb.connect(host=\"localhost\",\r\n\t\t\tuser=dba.usr,\r\n\t\t\tpasswd=dba.psw,\r\n\t\t\tdb=\"livros\")\r\n\r\ncur = db.cursor()\r\n\r\ntry:\r\n        cur.execute(\"\"\"INSERT INTO livro VALUES (NULL,%s,%s,%s)\"\"\",('Biblia', 'Moises', -2000))\r\n        db.commit()\r\nexcept:\r\n        db.rollback()\r\n\r\ndb.close()\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Para usar MySQL em Python, no Linux Slackware, que \u00e9 a distribui\u00e7\u00e3o de Linux que eu uso, tive que instalar o m\u00f3dulo MySQL-python. Para Windows, Mac, ou outras distribui\u00e7\u00f5es de Linux, encontrei as instru\u00e7\u00f5es seguintes no StackOverflow: For Windows user, you can get an exe of MySQLdb. For Linux, this is a casual package (python-mysqldb). &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/python.w3.pt\/?p=137\" class=\"more-link\">Continuar a ler <span class=\"screen-reader-text\">&#8220;MySQL e Python&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/137"}],"collection":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=137"}],"version-history":[{"count":5,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":142,"href":"http:\/\/python.w3.pt\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions\/142"}],"wp:attachment":[{"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/python.w3.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}