eliminar

Conexión a SQL Server con Python y PyODBC (CRUD)

En este post vamos a conectar Python 3 a una base de datos de SQL Server a través del driver ODBC y el paquete PyODBC.

Haremos un CRUD para demostrar cómo se hacen las 4 operaciones básicas a una base de datos.

Para comenzar, recuerda:

Conectar SQL Server con Python usando PyODBC – CRUD

Nota: todos los archivos están en un repositorio de GitHub.

Continue reading…

Actividad para insertar nueva mascota

Tutorial de SQLite con Android: CRUD (create, read, update, delete)

Para guardar datos en una base de datos usando Android tenemos que recurrir al maravilloso gestor SQLite3. Pues bien, hoy veremos cómo trabajar con SQLite desde Android usando Java.

Lo que veremos será un CRUD o ABC de Android con SQLite en donde veremos un insert, update, delete y select de SQL con Android.

Al final tendremos una app móvil simple que permitirá interactuar con SQLite para realizar las operaciones básicas que se ve así:

CRUD de SQLite con Android - Mascotas

CRUD de SQLite con Android – Mascotas

Todo esto usando SQLite y una clase que extiende de SQLiteOpenHelper.

Continue reading…

Eliminar todos los datos de una tabla en CodeIgniter

En un trabajo que estoy realizando intenté hacer un delete de este tipo en CodeIgniter:

$this->db->delete("la_tabla");

Cosa que permitiría eliminar todos los elementos de una tabla, pero no fue así y en su lugar salió el mensaje:

Deletes are not allowed unless they contain a “where” or “like” clause.

Que quiere decir que las eliminaciones no están permitidas si no les pones un where o un like. Pero si ejecutamos:

delete from mi_tabla;

En una consola de MySQL, todo va bien. Bueno, no importa, el problema fue con CodeIgniter y la solución es realmente sencilla.

Continue reading…

Eliminar elemento de arreglo en PHP a partir de su índice

Introducción

Este es un ejercicio simple pero que nos servirá a la mayoría al trabajar con arreglos en PHP. En algún momento de nuestras vidas puede que nos topemos con el problema de eliminar un elemento de un arreglo en PHP.

Por ejemplo, si tenemos un carrito de compras como el que implementamos en el sistema de ventas MVC tendremos que saber quitar un elemento de un array en PHP.

Continue reading…

SQLite3 y PDO con PHP: crud y ejemplos

Introducción

Hace algunas semanas o meses escribí una pequeña introducción a Python con SQLite. Ahora es el turno de PHP, un poderoso lenguaje muy popular soportado por casi todos los servidores del mundo. Veamos un ejemplo de PHP, SQLite3 y PDO.

SQLite3 viene como anillo al dedo si nuestra app no será consumida al mismo tiempo (en el mismo instante de tiempo), ya que, recordemos, no es una base de datos multihilo.

Nota: recuerda habilitar la extensión sqlite

Por cierto, ¿quieres un tutorial para MySQL? también puedes ver la conexión de PHP con otras bases de datos.

Continue reading…

Eliminar documentos duplicados en MongoDB

Introducción

Hablando de duplicidad, en alguna ocasión tuve que eliminar datos duplicados en MySQL y ya lo expliqué. Hoy explicaré cómo podemos eliminar duplicados en MongoDB, un gestor de base de datos que se compone de colecciones y que dentro de éstas aloja documentos.

Eliminar duplicados

Si sólo vienes por la solución, y no quieres ver el ejemplo, lo que tienes que ejecutar es esto:

Ahí “coleccion” es el nombre de tu colección. Y “laClave” es la clave que no quieres que se repita más de una vez.

Por cierto, haz un respaldo completo antes.

Quiero aclarar que la solución no es mía, yo sólo vengo a exponerla y a dar un ejemplo.

Ejemplo

Base de datos

Para este ejemplo utilizaré una base de datos de libros, en donde no puede repetirse el ISBN. Por favor nota que sólo es un base de datos de ejemplo, no esperes que los datos rean reales; se trata de ilustrar.

Insertaré esto:

Consultando

Consultaré los datos para ver si se han insertado:

Hora de eliminar los repetidos. Nota: en este caso es un ejemplo algo raro, pero puede que en alguna ocasión nos falle sólo una palabra y tengamos que eliminar los duplicados.

Eliminando duplicados

Para eliminarlos, utilizo esto:

Ejecuto la “consulta”:

Verificando eliminación

Y si vuelvo a consultar los datos existentes, veo esto:

¡Magia pura! ya no hay repetidos. Nos hemos quedado sólo con un dato. Esto funciona muy bien cuando tenemos documentos realmente repetidos, es decir, que todas sus claves sean idénticas; ya que de esta manera no importará cuál de ambos se elimine.

En este caso utilizamos al ISBN para eliminar, pero podemos utilizar cualquier clave.

Eliminar filas o valores duplicados en MySQL en una sola consulta

Introducción

A veces tenemos uno, dos o más datos que se repiten en nuestras tablas. Incluso a veces no sólo se repiten 2 veces, sino 3 o más. Así que hoy veremos cómo eliminar estos duplicados.

Solución

Básicamente tenemos que agregar algunos índices a la tabla. Ya que, si recordamos, los índices son índices porque no se repiten (y porque ayudan a hacer las búsquedas más rápidas). Entonces, si agregamos índices en los campos que no queremos que se repitan, se eliminarán de tal forma que, de todos los repetidos sólo quedará uno.

La consulta es:

ALTER IGNORE TABLE tu_tabla ADD UNIQUE INDEX(columna_1, columna_2);

En donde tu_tabla es el nombre de la tabla con datos repetidos. En este caso se supone que sólo son 2 columnas, pero podemos agregar muchas columnas.

Usamos IGNORE para que no nos dé ningún error, ya que nos intentará avisar que hay datos repetidos y que serán eliminados. Pero como nosotros ya sabemos que hay repetidos, ignoramos el error.

Después de hacerlo, podemos eliminar el índice usando:

 ALTER TABLE tu_tabla DROP INDEX columna_1;

Aquí es importante mencionar que el nombre del índice es formado por el nombre de la primer columna. Por lo que si la primer columna fue “nombre” entonces el índice será “nombre” sin importar cuántas columnas hayas indexado.

Nota: está de más decir que debemos hacer un respaldo completo antes de hacer cualquier movimiento. Nunca se sabe si algo puede salir mal.

ejemplo para ilustrar

Nota: tal vez la tabla no tenga sentido, pero recuerden que es para ilustrar. Es que no se me ocurre otra cosa para poner el ejemplo.

Crear tabla

Voy a crear una tabla y le pondré datos duplicados. La tabla guardará datos sobre mascotas. Para crear la tabla usamos:

CREATE TABLE mascotas (
  id     BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(255)    NOT NULL,
  edad   SMALLINT        NOT NULL,
  raza   VARCHAR(255)    NOT NULL,
  genero CHAR            NOT NULL
);

Llenar tabla

Para ponerle algunos datos usamos:

INSERT INTO mascotas (nombre, edad, raza, genero)
VALUES
  ('Maggie', 2, 'Maltés', 'F'),
  ('Cuco', 5, 'Chihuahua', 'M'),
  ('Coqueta', 3, 'Chihuahua', 'F'),
  #Atención aquí abajo: El único dato que cambia es el género
  ('Coqueta', 3, 'Chihuahua', 'M'),
  ('Chucha', 1, 'Pastor alemán', 'F'),
  ('Maggie', 2, 'Maltés', 'F'),
  ('Cuco', 5, 'Chihuahua', 'M'),
  ('Cuco', 5, 'Chihuahua', 'M'),
  ('Coqueta', 3, 'Chihuahua', 'F'),
  ('Chucha', 1, 'Pastor alemán', 'F');

Mostrando datos

Ahora mostramos los datos con:

SELECT * FROM mascotas;

Obtenemos:

Podemos observar que se repiten los datos. Y para este ejemplo supondremos que no pueden existir dos perros que tengan el mismo nombre, la misma edad, la misma raza ni el mismo género.

Es importante notar que Coqueta se repite 3 veces (está en el #3, #4 y #9), pero en las primeras dos en realidad no se repite, ya que cambia el género. Entonces se supone que esa fila debe quedar intacta, porque aunque los datos coincidan con la mascota #3 y #9 el género cambia.

Eliminando duplicados

Ahora ejecutaré el comando:

ALTER IGNORE TABLE mascotas ADD UNIQUE INDEX(nombre, edad, raza, genero);

Volveré a mostrar los datos:

Y podemos ver que Coqueta sigue ahí, y así debe ser. Porque indiqué que sólo quería eliminar aquellos en donde tanto el nombre, la edad, la raza y género fueran iguales. Y en éste caso cambia el género.

Si quisiéramos eliminar en donde se repitiera el nombre, la consulta sería:

ALTER IGNORE TABLE mascotas ADD UNIQUE INDEX(nombre);

Así podemos ir jugando con las columnas y los datos.

Eliminar índice

Finalmente, si no queremos que los índices estén ahí, podemos usar:

ALTER TABLE mascotas DROP INDEX nombre;

Es necesario notar que el nombre del índice es tomado de la primera columna que especificamos al indexar. Como en este caso fue nombre, entonces ese fue el nombre del índice.