{"id":166,"date":"2020-06-22T19:36:19","date_gmt":"2020-06-22T17:36:19","guid":{"rendered":"https:\/\/www.pythonparatodo.com\/?p=166"},"modified":"2021-07-31T18:56:49","modified_gmt":"2021-07-31T16:56:49","slug":"execute-executemany-y-executescript","status":"publish","type":"post","link":"https:\/\/www.pythonparatodo.com\/?p=166","title":{"rendered":"execute(), executemany() y executescript()"},"content":{"rendered":"\n<p>Los m\u00e9todos execute() , executemany() y executescript() son \u00fatiles para pasar ordenes SQL a la base de datos. Cada uno de ellos tiene una funci\u00f3n diferente.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">execute()<\/h4>\n\n\n\n<p>Pasa una instrucci\u00f3n a la base de datos. Por ejemplo, el siguiente c\u00f3digo devuelve todos los registros de la tabla&nbsp;<strong>Users<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import sqlite3\nimport os\ndb = os.path.join(os.getcwd(),'test.db3')\ncon = sqlite3.connect(db)\ncur = con.cursor()\ndatos = cur.execute('SELECT * FROM Users')<\/code><\/pre>\n\n\n\n<p>Si quisi\u00e9ramos agregar registros a una tabla con este m\u00e9todo, tendr\u00edamos que escribir tantas instrucciones como INSERTs. Es posible, pero existe un m\u00e9todo mas c\u00f3modo de usar.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">executemany()<\/h4>\n\n\n\n<p>Pasa varios registros a la tabla de una base de datos con una sola instrucci\u00f3n. Como las filas o registros se almacenan en una tupla, para pasarlos es necesaria una lista con los registros, teniendo en cuenta que cada elemento de la lista es una tupla con los valores de los campos a pasar. Una tupla ser\u00eda (&#8216;MiNombre&#8217;,&#8217;MiEmail&#8217;).<\/p>\n\n\n\n<p>En el siguiente ejemplo, se prepara la lista de usuarios con 3 tuplas, una por usuario con su nombre y email. Luego se realiza una consulta parametrizada usando el m\u00e9todo executemany().&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import sqlite3\nimport os\ndb = os.path.join(os.getcwd(),'test.db3')\nconn = sqlite3.connect(db)\ncur = conn.cursor()\nusuarios = [\n('User1','email1@email.com'),\n ('User2','email2@email.com'),\n('User3','email3#email.com')]\ncur.executemany('INSERT INTO Users(nombre,email) VALUES(?,?)',usuarios)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">executescript()<\/h4>\n\n\n\n<p>Si lo que se necesita es poder pasar varias instrucciones a la vez a la base de datos, es necesario el uso de executescript() y a\u00f1adir las instrucciones finalizadas con punto y coma (;), como en el siguiente ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import sqlite3\nimport os\ndb = os.path.join(os.getcwd(),'test.db3')\ncon = sqlite3.connect(db)\ncur = con.cursor()\nordenes = \"\"\"\nDROP TABLE IF EXISTS Users;\nCREATE TABLE Users (nombre VARCHAR(128),email VARCHAR(128));\nINSERT INTO Users(nombre,email) VALUES('MiNombre','MiEmail@email.com');\"\"\"\ncur.executescript(ordenes)\ncon.commit()\ncur.close()\ncon.close()<\/code><\/pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.buymeacoffee.com\/pythonparatodo\" target=\"_blank\">Si te ha servido de ayuda, inv\u00edtame a un caf\u00e9.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los m\u00e9todos execute() , executemany() y executescript() son \u00fatiles para pasar ordenes SQL a la base de datos. Cada uno &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74,4,73],"tags":[77,6,76],"class_list":["post-166","post","type-post","status-publish","format-standard","hentry","category-bases-de-datos","category-python","category-sqlite","tag-bases-de-datos","tag-python3","tag-sqlite3"],"_links":{"self":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=166"}],"version-history":[{"count":9,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/166\/revisions"}],"predecessor-version":[{"id":299,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/166\/revisions\/299"}],"wp:attachment":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}