{"id":9448,"date":"2024-12-08T17:51:15","date_gmt":"2024-12-08T20:51:15","guid":{"rendered":"https:\/\/www.red-handed.com.ar\/?page_id=9448"},"modified":"2026-06-10T15:47:23","modified_gmt":"2026-06-10T18:47:23","slug":"programacion-en-python-clase-12","status":"publish","type":"page","link":"https:\/\/www.red-handed.com.ar\/index.php\/programacion-en-python-clase-12\/","title":{"rendered":"PROGRAMACI\u00d3N EN PYTHON \u2013 CLASE 12"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">(Creado por el analista de sistemas y docente <strong>Leonel Iv\u00e1n Saafigueroa<\/strong>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>BASE DE DATOS<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Concepto y utilidad de los m\u00f3dulos en Python.<\/h3>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"1024\" src=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-724x1024.jpg\" alt=\"\" class=\"wp-image-10157\" srcset=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-724x1024.jpg 724w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-212x300.jpg 212w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-768x1086.jpg 768w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-1086x1536.jpg 1086w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1-1448x2048.jpg 1448w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/CURSO-DE-PYTHON-CLASE-12-1.jpg 1587w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-media-text alignfull has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center is-image-fill-element has-two-background-color has-background\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Imagin\u00e1 que ten\u00e9s una enorme colecci\u00f3n de informaci\u00f3n, desde los productos de tu tienda hasta los datos de tus clientes. Para organizar y acceder a toda esa informaci\u00f3n de forma eficiente, usamos las bases de datos. En esencia, una base de datos es un sistema que permite almacenar, gestionar y acceder a datos de forma estructurada, posee estas ventajas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite almacenar informaci\u00f3n de forma permanente.<\/li>\n\n\n\n<li>Proporciona mecanismos para realizar b\u00fasquedas, actualizaciones y borrado de datos.<\/li>\n\n\n\n<li>Organiza la informaci\u00f3n en tablas, con campos y registros.<\/li>\n\n\n\n<li>Puede utilizar campos clave para facilitar las b\u00fasquedas.<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/01\/persona_trabajando.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"501\" height=\"750\" src=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/01\/persona_trabajando.jpeg\" alt=\"\" class=\"wp-image-10114 size-full\" style=\"object-position:50% 50%\" srcset=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/01\/persona_trabajando.jpeg 501w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/01\/persona_trabajando-200x300.jpeg 200w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><\/a><\/figure><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-8b39a245f23af86cb409019fd1249518\" style=\"color:#1b6a05\"><strong><strong>Tablas<\/strong><\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>La Estructura Fundamental<\/strong><\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">La <strong>base de datos<\/strong> organiza la informaci\u00f3n en <strong>tablas<\/strong>. Pens\u00e1 en una <strong>tabla<\/strong> como una <strong>hoja de c\u00e1lculo avanzada<\/strong>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada <strong>tabla<\/strong> tiene:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Filas<\/strong> (Registros): Cada <strong>fila<\/strong> representa una entrada <strong>\u00fanica<\/strong> o <strong>registro<\/strong> de la informaci\u00f3n, como un producto espec\u00edfico en tu inventario, un cliente en tu lista de contactos, o una entrada en un cat\u00e1logo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Columnas<\/strong> (Campos): Cada <strong>columna<\/strong> representa un campo espec\u00edfico de informaci\u00f3n sobre el registro. Por ejemplo, en la tabla de productos, podr\u00edas tener columnas para el nombre del producto, la descripci\u00f3n, el precio, y la cantidad de stock.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo Pr\u00e1ctico: La Tabla de Productos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">ID Producto<\/th><th>Nombre<\/th><th>Descripci\u00f3n<\/th><th class=\"has-text-align-center\" data-align=\"center\">Precio<\/th><th class=\"has-text-align-center\" data-align=\"center\">Stock<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td>Laptop Gamer<\/td><td>Potente para juegos<\/td><td class=\"has-text-align-center\" data-align=\"center\">1200<\/td><td class=\"has-text-align-center\" data-align=\"center\">25<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td>Monitor 27&#8243;<\/td><td>Alta resoluci\u00f3n<\/td><td class=\"has-text-align-center\" data-align=\"center\">350<\/td><td class=\"has-text-align-center\" data-align=\"center\">30<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td>Teclado Mec\u00e1nico<\/td><td>Con switches mec\u00e1nicos<\/td><td class=\"has-text-align-center\" data-align=\"center\">80<\/td><td class=\"has-text-align-center\" data-align=\"center\"> 80<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td>Mouse \u00f3ptico<\/td><td>Mouse para dise\u00f1o<\/td><td class=\"has-text-align-center\" data-align=\"center\">30<\/td><td class=\"has-text-align-center\" data-align=\"center\">90<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esta estructura facilita la <strong>b\u00fasqueda<\/strong>, el <strong>filtrado<\/strong> y la <strong>modificaci\u00f3n de datos<\/strong>.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-fb93280ff28e2ed0e5913e1ec7da38f1\" style=\"color:#1b6a05\"><strong>Campos y registros<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">En una <strong>base de datos<\/strong>, un <strong>campo<\/strong> es una <strong>columna<\/strong> dentro de una <strong>tabla<\/strong> que almacena un tipo espec\u00edfico de informaci\u00f3n sobre los <strong>registros<\/strong> que est\u00e1n en esa <strong>tabla<\/strong>. Por ejemplo, si pensamos en una <strong>tabla<\/strong> de productos, cada producto ser\u00eda un <strong>registro<\/strong>, y cada <strong>campo<\/strong> almacenar\u00eda una <strong>caracter\u00edstica espec\u00edfica<\/strong> de ese <strong>producto<\/strong>, como su <strong><em>nombre<\/em><\/strong>, <strong><em>cantidad<\/em><\/strong> o <strong><em>precio<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo Pr\u00e1ctico: La Tabla de Productos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">ID Producto<\/th><th>Nombre<\/th><th>Descripci\u00f3n<\/th><th class=\"has-text-align-center\" data-align=\"center\">Precio<\/th><th class=\"has-text-align-center\" data-align=\"center\">Stock<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td>Laptop Gamer<\/td><td>Potente para juegos<\/td><td class=\"has-text-align-center\" data-align=\"center\">1200<\/td><td class=\"has-text-align-center\" data-align=\"center\">25<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td>Monitor 27&#8243;<\/td><td>Alta resoluci\u00f3n<\/td><td class=\"has-text-align-center\" data-align=\"center\">350<\/td><td class=\"has-text-align-center\" data-align=\"center\">30<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td>Teclado Mec\u00e1nico<\/td><td>Con switches mec\u00e1nicos<\/td><td class=\"has-text-align-center\" data-align=\"center\">80<\/td><td class=\"has-text-align-center\" data-align=\"center\"> 80<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td>Mouse \u00f3ptico<\/td><td><strong>Mouse para dise\u00f1o<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">30<\/td><td class=\"has-text-align-center\" data-align=\"center\">90<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, la fila <strong>4<\/strong> muestra el registro &#8220;<strong>Mouse Para dise\u00f1o<\/strong>&#8220;, del <strong><em>campo<\/em><\/strong> representado por la columna <strong>Descripci\u00f3n<\/strong>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-7b81651fe6b6e39e8db6addf549bd0e4\" style=\"color:#1b6a05\"><strong><strong>Tipos de datos para los campos<\/strong><\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Estos son algunos de los <strong>tipos de datos<\/strong> m\u00e1s comunes y \u00fatiles para un proyecto de gesti\u00f3n de inventario:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Texto:<\/strong> Este tipo de dato se utiliza para almacenar <strong><em>cadenas de texto<\/em><\/strong>. Por ejemplo, para guardar el nombre del producto (&#8220;<strong>Manzana<\/strong>&#8220;, &#8220;<strong>Leche<\/strong>&#8220;, etc.) o su descripci\u00f3n.<\/li>\n\n\n\n<li><strong>N\u00fameros enteros:<\/strong> Es ideal para <strong><em>cantidades de productos<\/em><\/strong> o para campos que necesiten valores <strong><em>num\u00e9ricos sin decimales<\/em><\/strong>, como el c\u00f3digo de un producto.<\/li>\n\n\n\n<li><strong>N\u00fameros de punto flotante:<\/strong> Ideal para almacenar precios o valores que incluyan <strong><em>decimales<\/em><\/strong>.<\/li>\n\n\n\n<li><strong>Fechas y horas:<\/strong> Ideales para registrar cu\u00e1ndo ocurri\u00f3 algo, como la <strong><em>fecha<\/em><\/strong> en que un producto fue agregado al inventario.<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-a9054fa82dfe5914de34c8795f93d2a2\" style=\"color:#1b6a05\"><strong><strong>Campo clave<\/strong><\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">El <strong>campo clave<\/strong>, tambi\u00e9n conocido como <strong>clave primaria<\/strong>, se utiliza para identificar de manera <strong>\u00fanica<\/strong> cada <strong>registro<\/strong>. Permite diferenciar cada producto de manera <strong>\u00fanica<\/strong>. Posee dos caracter\u00edsticas principales:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Unicidad:<\/strong> No puede haber dos <strong>registros<\/strong> en la <strong>tabla<\/strong> que tengan el mismo <strong>valor<\/strong> en el <strong>campo clave<\/strong>. Por ejemplo, en nuestra tabla de productos, usamos un campo llamado &#8220;<strong>ID Producto<\/strong>&#8220;, que asigna un <strong>n\u00famero \u00fanico<\/strong> a cada <strong>producto<\/strong>. As\u00ed, aunque tengamos dos productos llamados &#8220;<strong>Pan<\/strong>&#8220;, cada uno tendr\u00eda un n\u00famero de <strong>ID<\/strong> diferente, lo que nos permite diferenciarlos.<br><strong>No puede ser nulo:<\/strong> El campo clave debe tener siempre un <strong>valor<\/strong>. No puede quedar vac\u00edo. Si no existiera una <strong>clave<\/strong> para un <strong>registro<\/strong>, no tendr\u00edamos manera de identificarlo claramente dentro de la <strong>tabla<\/strong>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-2a967153c57ae18a84df65089a8c3c15\" style=\"color:#1b6a05\"><strong>Diccionario vs. base de datos<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Cada <strong>producto<\/strong> se puede almacenar dentro de un <strong>diccionario<\/strong> llamado <strong>inventario<\/strong>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center has-background is-layout-flow wp-block-column-is-layout-flow\" style=\"background-color:#1b6b0594\">\n<p class=\"has-text-align-center has-white-color has-text-color has-link-color wp-elements-ec3df65704a303216ef556bd7e89771d wp-block-paragraph\">C\u00f3digo:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">inventario = {\n   1: {\n       \"nombre\": \"Manzana\",\n       \"descripcion\": \"Fruta fresca y deliciosa\",\n       \"cantidad\": 50,\n       \"precio\": 0.5,\n       \"categoria\": \"Frutas\"\n   }\n}<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A partir de lo que hemos aprendido, podr\u00edamos reemplazar ese <strong>diccionario<\/strong> por una <strong>tabla<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PRIMARY KEY<\/strong> indica que ese campo no admite duplicados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>NOT NULL<\/strong> indica que el campo no puede quedar vac\u00edo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>AUTOINCREMENT<\/strong> hace que el <strong>ID<\/strong> se asigne autom\u00e1ticamente cada vez que se registra un nuevo producto.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Campo<\/th><th class=\"has-text-align-center\" data-align=\"center\">Tipo de dato<\/th><th>Propiedades<\/th><\/tr><\/thead><tbody><tr><td>ID Producto<\/td><td class=\"has-text-align-center\" data-align=\"center\">INTEGER<\/td><td>PRIMARY KEY, AUTOINCREMENT<\/td><\/tr><tr><td>Nombre<\/td><td class=\"has-text-align-center\" data-align=\"center\">TEXT<\/td><td>NOT NULL<\/td><\/tr><tr><td>Descripci\u00f3n<\/td><td class=\"has-text-align-center\" data-align=\"center\">TEXT<\/td><td><\/td><\/tr><tr><td>Cantidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">INTEGER<\/td><td>NOT NULL<\/td><\/tr><tr><td>Precio<\/td><td class=\"has-text-align-center\" data-align=\"center\">REAL<\/td><td>NOT NULL<\/td><\/tr><tr><td>Categor\u00eda<\/td><td class=\"has-text-align-center\" data-align=\"center\">TEXT<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-5e94a76b6133b5a94f56b2e084e8426b\" style=\"color:#1b6a05\"><strong>Fundamentos SQL<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>\u00bfQu\u00e9 es SQLite y para qu\u00e9 sirve?<\/strong><\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-media-text alignfull has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center has-two-background-color has-background\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>SQLite<\/strong> es una biblioteca que proporciona un motor de base de datos <strong>SQL<\/strong> ligero, aut\u00f3nomo y <strong><em>sin servidor<\/em><\/strong>. Imagin\u00e1 tener una <strong>base de datos<\/strong> completa en un solo archivo, que puedes llevar con vos a cualquier parte, sin necesidad de instalar un servidor de base de datos adicional. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Esa es la magia de <strong>SQLite<\/strong>!<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/SQLiteLOGO.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"407\" src=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/SQLiteLOGO.webp\" alt=\"\" class=\"wp-image-10191 size-full\" srcset=\"https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/SQLiteLOGO.webp 860w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/SQLiteLOGO-300x142.webp 300w, https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2025\/02\/SQLiteLOGO-768x363.webp 768w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/a><\/figure><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-5d6e9008be72e0632fa0a8ca83e518bd\" style=\"color:#1b6a05\"><strong>Importar el m\u00f3dulo SQLite<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Para acceder a las funciones de <strong>SQLite<\/strong> en <strong>Python<\/strong>, solo tenemos que importar el <strong>m\u00f3dulo sqlite3<\/strong> usando la misma sintaxis que empleamos para otros m\u00f3dulos.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                   # Importar el m\u00f3dulo<\/pre>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que importamos <strong>sqlite3<\/strong>, podemos usar todas sus <strong>funciones<\/strong> y <strong>objetos<\/strong> para conectarnos a una <strong>base de datos<\/strong>, ejecutar consultas y almacenar o recuperar datos.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-a9096cda202a85c901b788aceb75e2c6\" style=\"color:#1b6a05\"><strong>Conexi\u00f3n a la base de datos<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Luego de importar el <strong>m\u00f3dulo<\/strong>, usamos la funci\u00f3n <strong>sqlite3.connect()<\/strong> para conectarnos (o crear una base de datos nueva si no existe). Al conectar con la <strong>base de datos<\/strong>, creamos un &#8220;<strong>puente<\/strong>&#8221; entre nuestro <strong>programa<\/strong> y el archivo de <strong>base de datos<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3   # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"inventario.db\") # Conectar a la base de datos (o crearla)\ncursor = conexion.cursor()       # Crear un cursor para interactuar con la base de datos<\/pre>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">El <strong>cursor<\/strong> nos permite ejecutar comandos <strong>SQL<\/strong> para <strong><em>interactuar<\/em><\/strong> con la <strong>base de datos<\/strong>, como <strong>crear tablas<\/strong> y <strong>gestionar<\/strong> los <strong>datos<\/strong> que vamos a guardar.<\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-3486881d2d6eb68f2caf4da100901e0c\" style=\"color:#1b6a05\"><strong>SELECT: Recuperar datos<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">La consulta <strong>SELECT<\/strong> nos permite obtener todos los <strong>registros<\/strong> de una <strong>tabla<\/strong> o s\u00f3lo algunos en particular, seg\u00fan los <strong>filtros<\/strong> o <strong>condiciones<\/strong> que le indiquemos:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\ncursor.execute(\"SELECT * FROM Personas\")    # Ejecutar la consulta SELECT \nresultados = cursor.fetchall()              # Obtener todos los registros\nfor registro in resultados:                 # Mostrar los resultados  \n   print(\"Nombre:\", registro[0], \"Edad:\", registro[1], \"Ciudad:\", registro[2])\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-1609a8131ee5e90f4d6f46d150a74abd\" style=\"color:#1b6a05\"><strong>SELECT con WHERE<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Usando la cl\u00e1usula <strong>WHERE<\/strong>, podemos definir una <strong>condici\u00f3n<\/strong> o <strong>filtro<\/strong>. Supongamos que queremos ver s\u00f3lo los <strong>registros<\/strong> de personas que viven en &#8220;<strong>Buenos Aires<\/strong>&#8220;. En este caso, la consulta se ve as\u00ed:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Ejecutar la consulta SELECT: \ncursor.execute(\"SELECT * FROM Personas WHERE ciudad = 'Buenos Aires'\")    resultados = cursor.fetchall()              # Obtener todos los registros\nfor registro in resultados:                 # Mostrar los resultados  \n   print(\"Nombre:\", registro[0], \"Edad:\", registro[1], \"Ciudad:\", registro[2])\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-243d8e328cae736fe1d7668ef05ca863\" style=\"color:#1b6a05\"><strong>SELECT con campos espec\u00edficos<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Si en lugar de <strong>*<\/strong> ponemos el <strong>nombre<\/strong> de los <strong>campos<\/strong> que queremos recuperar, <strong>SELECT<\/strong> devuelve s\u00f3lo estos <strong>datos<\/strong>. Por ejemplo, si solo queremos ver el <strong>nombre<\/strong> y la <strong>edad<\/strong> de cada persona usamos:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Ejecutar la consulta SELECT, devolviendo solo las columnas nombre y edad: \ncursor.execute(\"SELECT nombre, edad FROM Personas\")   \nresultados = cursor.fetchall()              # Obtener todos los registros\nfor registro in resultados:                 # Mostrar los resultados  \n   print(\"Nombre:\", registro[0], \"Edad:\", registro[1], \"Ciudad:\", registro[2])\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-4639532beb4225f43b6764d74410d4a5\" style=\"color:#1b6a05\"><strong>SELECT con ORDER BY<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">La cl\u00e1usula <strong>ORDER BY<\/strong> ordena los <strong>resultados<\/strong> de una <strong>consulta<\/strong> alfab\u00e9ticamente en orden <strong>creciente<\/strong>. Si usamos &#8220;<strong>DESC<\/strong>&#8220;, el orden se <strong>invierte<\/strong>. Pod\u00e9s probar el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Ejecutar la consulta SELECT, ordenada por nombre de \"Z\" a \"A\": \ncursor.execute(\"SELECT * FROM Personas ORDER BY nombre DESC;\")   \nresultados = cursor.fetchall()              # Obtener todos los registros\nfor registro in resultados:                 # Mostrar los resultados  \n   print(\"Nombre:\", registro[0], \"Edad:\", registro[1], \"Ciudad:\", registro[2])\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-2ec6539d8a08c47dcbb09e044e0094fe\" style=\"color:#1b6a05\"><strong>Agregando datos con INSERT<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">El comando <strong>INSERT<\/strong> permite agregar nuevos <strong>datos<\/strong> a una <strong>tabla<\/strong>. Es necesario especificar tanto los <strong>campos<\/strong> en los que queremos a\u00f1adir <strong>datos<\/strong> como los <strong>valores<\/strong> que queremos almacenar en esos <strong>campos<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Insertar un nuevo registro en la tabla Personas\ncursor.execute(\"INSERT INTO Personas (nombre, edad, ciudad) VALUES ('Carlos', 27, 'Tucum\u00e1n')\")\nconexion.commit()                            # Guardar los cambios\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-e0f6dc6f4c689db848cdc108cb1e0755\" style=\"color:#1b6a05\"><strong>La importancia de commit()<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">En <strong>SQLite<\/strong> (y en la mayor\u00eda de los sistemas de gesti\u00f3n de <strong>bases de datos<\/strong>), cuando llev\u00e1s adelante operaciones como <strong>cursor.execute<\/strong> para <strong>insertar<\/strong>, <strong>actualizar<\/strong> o <strong>eliminar datos<\/strong>, dichas modificaciones no se guardan inmediatamente. En su lugar, los cambios se mantienen en una <strong>transacci\u00f3n<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una <strong>transacci\u00f3n<\/strong> es un conjunto de operaciones que se ejecutan de forma &#8220;<strong><em>temporal<\/em><\/strong>&#8221; hasta que decid\u00eds confirmarlas o descartarlas. <strong>SQLite<\/strong> mantiene estas operaciones en memoria (<strong>buffer<\/strong>) o en un archivo temporal y no las aplica al archivo de la <strong>base de datos<\/strong> hasta que se haga un <strong>commit<\/strong>.<\/p>\n\n\n\n<p class=\"has-three-color has-text-color has-link-color wp-elements-4bf0d4eb2fa79ab13f711f38a29af523 wp-block-paragraph\">Si no se hace el <strong>commit()<\/strong> y la conexi\u00f3n se cierra, <strong>SQLite<\/strong> deshace autom\u00e1ticamente los cambios pendientes (un rollback impl\u00edcito), por lo que los datos <strong>no se guardan<\/strong>.<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-802b250355652446cf40f76711b3f737\" style=\"color:#1b6a05\"><strong>Actualizando datos con UPDATE<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">El comando <strong>UPDATE<\/strong> permite <strong>modificar datos<\/strong> que ya est\u00e1n guardados en una <strong>tabla<\/strong>. Podemos actualizar uno o varios <strong>campos<\/strong> de un <strong>registro<\/strong> espec\u00edfico sin necesidad de agregar un nuevo <strong>registro<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Actualizar la edad de Ana en la tabla Personas\ncursor.execute(\"UPDATE Personas SET edad = 24 WHERE nombre = 'Ana'\")\n\nconexion.commit()                            # Guardar los cambios\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated   \" data-eds-entry-animation=\"flash\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color wp-elements-39d97ad7e2e3a589e13f011ead57bffd\" style=\"color:#1b6a05\"><strong>Eliminando datos con DELETE<\/strong><\/h2>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Finalmente, el comando <strong>DELETE<\/strong> en <strong>SQL<\/strong> nos permite <strong>eliminar registros de una tabla<\/strong>. Es importante recordar usar la cl\u00e1usula <strong>WHERE<\/strong> para indicar la condici\u00f3n que deben cumplir los <strong>registros<\/strong> a eliminar. <\/p>\n\n\n\n<p class=\"has-three-color has-text-color has-link-color wp-elements-a04515073cc5bb28700da4cfd471ced6 wp-block-paragraph\"><strong>Sin ella, borramos toda la tabla.<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import sqlite3                              # Importar el m\u00f3dulo\nconexion = sqlite3.connect(\"base_datos.db\") # Conectarse a la base de datos\ncursor = conexion.cursor()                  # Crear un cursor\n# Eliminar los registros con nombre \"Jos\u00e9\" en la tabla Personas:\ncursor.execute(\"DELETE FROM Personas WHERE nombre = 'Jos\u00e9'\")\n\nconexion.commit()                            # Guardar los cambios\nconexion.close()                             # Cerrar la conexi\u00f3n<\/pre>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-cover alignfull has-parallax\" style=\"padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30);min-height:100vh;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-80 has-background-dim\" style=\"background-color:#000000\"><\/span><div class=\"wp-block-cover__image-background wp-image-5260 has-parallax\" style=\"background-position:50% 50%;background-image:url(https:\/\/www.red-handed.com.ar\/wp-content\/uploads\/2024\/06\/TAREA10-scaled.webp)\"><\/div><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h2 class=\"wp-block-heading has-text-align-center alignwide has-white-color has-text-color\" style=\"font-size:69px;line-height:1.2\"><strong><strong>TAREA PARA EL HOGAR<\/strong><\/strong><\/h2>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"wp-block-paragraph\">Crea un programa en <strong>Python<\/strong> que inserte varios <strong>registros<\/strong> en la <strong>tabla Personas<\/strong> usando una <strong>lista de tuplas<\/strong> predefinida. Cada <strong>tupla<\/strong> debe contener un <strong>nombre<\/strong>, una <strong>edad<\/strong> y una <strong>ciudad<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-eds-animate-it-block eds-animate-block-save\"><div class=\"eds-animate animated edsanimate-sis-hidden  \" data-eds-entry-animation=\"fadeIn\" data-eds-entry-delay=\"0\" data-eds-entry-duration=\"0.5\" data-eds-entry-timing=\"linear\" data-eds-exit-animation=\"\" data-eds-exit-delay=\"0\" data-eds-exit-duration=\"0.5\" data-eds-exit-timing=\"linear\" data-eds-repeat-count=\"1\" data-eds-keep=\"yes\" data-eds-animate-on=\"scroll\" data-eds-scroll-offset=\"30\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6c531013 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Us\u00e1 un <strong>bucle<\/strong> para recorrer la <strong>lista<\/strong> e insertar cada <strong>persona<\/strong> en la <strong>base de datos<\/strong>. La lista debe tener al menos cinco personas nuevas y al finalizar el programa deben mostrarse todos los <strong>registros<\/strong> en la <strong>tabla Personas<\/strong>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center has-background is-layout-flow wp-block-column-is-layout-flow\" style=\"background-color:#1b6b0594\">\n<p class=\"has-text-align-center has-white-color has-text-color has-link-color wp-elements-56b2b3ede0485e8a31a30ed48a7031b6 wp-block-paragraph\">La lista de tuplas tiene una estructura como la siguiente:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nuevas_personas = [\n   (\"Esteban\", 32, \"Mar del Plata\"),\n   (\"Valeria\", 27, \"Bah\u00eda Blanca\"),\n   (\"Fernando\", 41, \"Rosario\"),\n   (\"Carolina\", 29, \"La Plata\"),\n   (\"Juan\", 35, \"C\u00f3rdoba\")\n]<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Luego desarroll\u00e1 un programa en <strong>Python<\/strong> que elimine todos los registros en la <strong>tabla Personas<\/strong> donde la <strong>edad<\/strong> sea menor a <strong>25<\/strong> a\u00f1os.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al final del programa, mostr\u00e1 todos los registros restantes para confirmar que se han eliminado correctamente aquellos que cumplen con la <strong>condici\u00f3n<\/strong> establecida.<\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Creado por el analista de sistemas y docente Leonel Iv\u00e1n Saafigueroa) BASE DE DATOS Concepto y utilidad de los m\u00f3dulos en Python. A partir de lo que hemos aprendido, podr\u00edamos reemplazar ese diccionario por una tabla. PRIMARY KEY indica que ese campo no admite duplicados. NOT NULL indica que el campo no puede quedar vac\u00edo. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9448","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/9448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/comments?post=9448"}],"version-history":[{"count":53,"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/9448\/revisions"}],"predecessor-version":[{"id":10225,"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/pages\/9448\/revisions\/10225"}],"wp:attachment":[{"href":"https:\/\/www.red-handed.com.ar\/index.php\/wp-json\/wp\/v2\/media?parent=9448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}