sqlite

Programación con Python y bases de datos

En este post te muestro cómo conectar Python 3 a varios motores de bases de datos, por ejemplo, MySQL / MariaDB, SQLite, SQL Server, PostgreSQL y SQLite 3.

Las bases de datos son un aspecto fundamental en los sistemas de información, pues permiten guardar y leer información de cualquier tipo.

Python provee la interfaz DB API 2.0 para conectar a todas las bases de datos usando la misma API o interfaz de programación de aplicaciones.

Python y bases de datos como MongoDB, MySQL, PostgreSQL, SQL Server, SQLite | ejemplos de código

Existen muchos motores de bases de datos que pueden ser consumidos con Python.

Continue reading…

PHP y bases de datos: ejemplos y tutoriales de conexión

En este artículo te muestro cómo conectar PHP con varias bases de datos. Aparte de los motores que usan SQL, PHP también puede consumir bases de datos No-SQL como MongoDB.

Conexión de PHP con Bases de datos

PHP es un lenguaje muy popular para la programación del lado del servidor. Funciona para muchísimas cosas, entre ellas, conectar con bases de datos a través del driver PDO por ejemplo.

Este post es un índice para ver cómo PHP puede conectarse con varios motores de bases de datos.

Continue reading…

Relaciones entre tablas de SQLite – Soporte para claves foráneas

Las relaciones entre tablas son fundamentales y realmente necesarias en el mundo de las bases de datos SQL.

El motor SQLite tiene un buen soporte para las relaciones entre las tablas, es decir, soporta las claves foráneas especificando relaciones de una tabla con otra.

Vamos a ver en este post cómo se usan las foreign keys en SQLite con algunos ejemplos simples.

Continue reading…

Diseño de actividad principal de Agenda en Android

Android y SQLite: agenda | Ejemplo de app con RecyclerView

Vamos a practicar un poco más con SQLite y Android con otro ejercicio práctico: la creación de una agenda.

Se pretende realizar una aplicación de una agenda en donde se escriba un identificador, el número de teléfono y el nombre de una persona.

Viéndolo desde el punto de vista de diseño de bases de datos o experiencia de usuario el ejercicio no estará muy bien; pero servirá mucho para practicar porque veremos cómo:

  1. Insertar un registro en SQLite
  2. Obtener un registro por ID
  3. Comprobar si un registro ya existe
  4. Listar los registros existentes

Continue reading…

6 - Copiar base de datos de dispositivo a PC con adb pull

Extraer base de datos de SQLite en Android sin root

Hoy vamos a ver cómo extraer una base de datos de SQLite de una aplicación de Android para copiarla a nuestra computadora y poder analizarla haciendo consultas; evitando pasar por la API de Java.

No vamos a necesitar root, simplemente tener el ejecutable de adb que se instala cuando comenzamos a programar en Android.

Por favor mira este tutorial en donde se ve cómo agregar adb.exe a la variable PATH de Windows.

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…

Modificar gemfile para instalar gema de SQLite3 de otra manera

Solución a Cannot load such file — sqlite3/sqlite3_native (LoadError) en Ruby on Rails

Si al intentar ejecutar una aplicación de Ruby on rails en Windows aparece el siguiente error:

Cannot load such file — sqlite3/sqlite3_native (LoadError)

Hoy traigo una solución que funciona. No sé por qué aparece este error la mayoría de veces sobre Windows, ¿así quieren fomentar el uso de rails? por eso tanta gente prefiere otras cosas, en fin, veremos cómo arreglar este problema.

Continue reading…

Diferencia entre IFNULL y COALESCE en SQL

Introducción

En otros posts ya vimos cómo usar coalesce en MySQL. Hoy veremos la diferencia entre la función IFNULL y la función COALESCE en este motor de base de datos. La diferencia es notable y es mejor entenderla antes de usar una u otra función.

Por cierto ,también veremos cuál usar en lugar de otra, sobre todo si trabajamos en otros motores SQL como SQL Server o SQLite. Ya que IFNULL es propia de MySQL (no sé en cuáles otros existe, pero no es en todos).

Continue reading…

Columnas con autoincremento en SQLite3

Introducción

El mismo sitio de SQLite3 dice que no recomienda el autoincremento o las columnas auto incrementables. Sin embargo, algunas veces es necesario hacer esto y según yo, no afecta tanto al rendimiento.

Veamos cómo crear una tabla con autoincremento y cómo es que SQLite3 maneja eso internamente. Por cierto, ya sabemos que este motor crea la columna rowid pero no podemos confiar en ella.

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…

Cuidado con la columna rowid autoincrementable de SQLite

Cuidado con la columna rowid autoincrementable de SQLite

Introducción

Internamente, SQLite (la base de datos que no necesita servidor) agrega una columna llamada rowid. Esto es una columna autoincrementable y por lo tanto no se repite.

Probablemente seamos perezosos y confiemos en ella, creyendo que todo irá bien.

Recientemente estuve trabajando en un proyecto con SQLite y descubrí algo muy importante que debemos saber al trabajar con el rowid implícito.

Explicación del error

Si no utilizas relaciones en tus tablas, puedes dejar de leer. Lo que hace esta característica es que no recuerda cuáles ids ya fueron utilizados.

Es decir, si tenemos 3 filas (con el id 1, 2 y 3 respectivamente) y eliminamos la tercer fila, sólo quedarán 2 (pero el id 3 ya había estado en uso).

Más tarde insertamos un nuevo registro, esperando que el id sea 4 (pues el 3, aunque no existe, ya fue utilizado), pero no es así, el id será 3.

Esto trae muchos problemas, pues si confiamos en que nunca se repetirá aunque se elimine, traerá resultados inesperados.

Un ejemplo que se me ocurre es tener 3 clientes. Luego hacer ventas que tengan una relación con clientes y que guarden el id de cliente.

Si eliminamos el tercer cliente, y luego creamos uno nuevo, parecerá que este nuevo cliente será el que ha hecho las ventas.

Rowid autoincrementable

Como lo dije hace un momento, si tenemos una tabla así:

CREATE TABLE mascotas(
  nombre TEXT NOT NULL
);

Automáticamente se agregará el rowid aunque no lo declaremos. Si no lo necesitamos, no hay problema.

Pero si necesitamos una columna autoincrementable hay que declararlo explícitamente como se ve abajo.

Solución

Hay que declarar implícitamente una columna de autoincremento, y también indicar que es una clave primaria.

Puede llamarse como deseemos pero en mi caso le pondré “rowid” para que mi app siga siendo compatible.

La tabla quedaría así:

CREATE TABLE mascotas(
  rowid INTEGER PRIMARY KEY AUTOINCREMENT,
  nombre TEXT NOT NULL
);

Con eso terminamos. Aquí dejo las referencias.