Bot de Telegram con base de datos MySQL

Telegram y MySQL: conexión usando bot

En este post vamos a ver cómo realizar la conexión de Telegram con MySQL a través de un bot, de modo que podamos guardar y consultar datos de una base de datos de MySQL desde Telegram.

Telegram bot con MySQL - Listar e insertar registros a base de datos con comandos

Telegram bot con MySQL – Listar e insertar registros a base de datos con comandos

Con lo que veremos vamos a poder insertar datos en una tabla de MySQL desde Telegram y cualquier chat (siempre y cuando nuestro bot pueda leer los mensajes).

También vamos a ver cómo guardar el nombre del usuario y la fecha de envío del mensaje. Será un CRUD (sin Update) básico pero puedes partir del mismo para hacer cosas más específicas.

(más…)

Contraseña no crackeada - Hash no encontrado

¿Cómo almacenar contraseñas en bases de datos?

El día de hoy te voy a compartir un poco de mi experiencia como programador al guardar contraseñas en bases de datos, sin importar lenguaje de programación ni motor de base de datos.

Te daré algunos consejos para almacenar passwords en una base de datos y que obviamente queden seguras para que ni siquiera tú sepas cuál es la contraseña pero puedas resetearla en caso de ser necesario.

(más…)

Agrupar condiciones WHERE en SQL usando Laravel

En el post de hoy vamos a trabajar con Laravel, PHP y consultas SQL con WHERE. Como bien sabes, en MySQL o motores similares podemos agrupar condiciones usando paréntesis, estableciendo así un orden.

Por ejemplo, si queremos encerrar 2 condiciones y luego evaluarlas con un AND, haríamos algo así:

select * from `productos` where `id_establecimiento` = ? and (`descripcion` LIKE ? or `codigo_barras` LIKE ?) order by `descripcion` asc;

En este caso hacemos un and entre la primera comparación y el resultado de la segunda que está encerrada entre paréntesis para evaluar un or.

Esto es importante porque (para este ejemplo) si no se usaran paréntesis se podrían ver los productos de todos los establecimientos si es que el código de barras coincide.

Entonces veamos cómo agrupar y evaluar condiciones booleanas de la base de datos entre paréntesis usando el Query Builder y ORM de Laravel.

(más…)

Flutter con SQLite3 en Windows

Flutter y SQLite multiplataforma

En este post te enseñaré a usar Flutter con SQLite en varias plataformas, excepto la web. El paquete oficial soporta solo Android, iOS y MacOS, pero no Windows ni Linux.

Aquí veremos cómo usar SQLite con Flutter en Android, iOS, MacOS, Windows y Linux usando un paquete adicional llamado sqflite_ffi que es compatible con Linux y Windows.

Nota: si tú solo quieres usar SQLite en Android, iOS o MacOS entonces tal vez quieras buscar un tutorial más simple como este, ya que aquí enseño a cómo tener SQLite en la mayor cantidad de plataformas posibles.

(más…)

Tabla de productos comprados para mostrar como JSON

SQL: obtener varias filas de subconsulta en una sola, simulando JSON para agrupar

Hace tiempo te mostré cómo “encapsular” varias filas de datos en una sola fila usando JSON con PostgreSQL y las funciones que de JSON que este motor ofrece.

Hoy te enseñaré a obtener varias filas “comprimidas” dentro de una fila simulando un JSON concatenando los resultados, por lo que será compatible con varios motores de bases de datos.

En pocas palabras ingresaremos un arreglo de filas en una fila, agrupando varias filas en una sola, o mejor dicho, colocar resultados de una subconsulta como JSON.

(más…)

Agregar columna a tabla si no existe en SQLite3 con Golang

En el tutorial de hoy te mostraré una pequeña función que te permite agregar una columna a una tabla solo si la misma no existe.

El motor de base de datos que vamos a usar será SQLite3 pero me imagino que debe funcionar para otros como PostgreSQL o MySQL.

Esto es necesario porque en ocasiones el cliente no puede hacer los cambios a la base de datos (no puede ejecutar sentencias SQL) y además se desean conservar los datos ya existentes.

Por ello es que hoy veremos cómo agregar una columna a una tabla conservando sus datos, y agregarla solo si no existe, verificando la tabla con PRAGMA en SQLite3.

(más…)

Guardar números de teléfono en base de datos

En este post vamos a hablar sobre cómo guardar números telefónicos, teléfonos o números de teléfono en las bases de datos, enfocándonos en el tipo de dato.

Esto va a responder a la pregunta de ¿Cuál tipo de dato usar para guardar números de teléfono?.

Lo expuesto aquí es mi opinión y sugerencia, pero al final puedes hacer lo que gustes. Aunque la respuesta parezca obvia, he visto que varios usuarios preguntan esto y por eso he decidido hacer este post.

(más…)

PostgreSQL: obtener varias filas de subconsulta en una columna

Hoy vamos a ver algo muy necesario al realizar consultas en bases de datos usando PostgreSQL.

Se trata de traer varios datos en una subconsulta pero colocarlos todos dentro de una columna, codificados de cierta manera. De este modo traemos varios datos de varias filas, por cada fila, como una columna.

Para esto vamos a usar las funciones JSON que PostgreSQL ofrece, en especial la función json_agg.

Con esto vamos a tener varios datos de una subconsulta como una cadena que podremos decodificar más adelante.

Si bien no es lo más adecuado, funciona y es muy rápido.

Nota: si tú no usas PostgreSQL aquí te dejo una alternativa.

(más…)