Skip to content

Conexion SQLite

Conectarnos e interactuar programaticamente con una base de datos SQLite es bastante sencillo.

Bash

Si necesitas interactuar con SQLite desde la terminal, puedes usar el cliente sqlite3 que se instala junto con SQLite.

sqlite3 base_de_datos.db
sqlite3 base_de_datos.db "SELECT * FROM tabla;"
sqlite3 base_de_datos.db < archivo.sql

Python

En Python podemos usar la librería sqlite3 que viene incluida en la biblioteca estándar:

import sqlite3
import os

# Eliminar la base de datos si existe
if os.path.exists('test.db'):
    os.remove('test.db')

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

with open('init.sql', 'r') as f:
    sql_script = f.read()
cursor.executescript(sql_script)

cursor.execute("SELECT * FROM usuarios")
for row in cursor.fetchall():
    print(row)
conn.close()

Node.js (CommonJS)

Para conectarte a SQLite desde Node.js, puedes usar el paquete sqlite3:

const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');
const path = require('path');

// Eliminar la base de datos si existe
const dbPath = 'test.db';
if (fs.existsSync(dbPath)) {
    fs.unlinkSync(dbPath);
}

// Crear conexión a la base de datos
const db = new sqlite3.Database(dbPath);

// Leer el archivo SQL
const sqlScript = fs.readFileSync('init.sql', 'utf8');

// Ejecutar el script SQL
db.exec(sqlScript, (err) => {
    if (err) {
        console.error('Error ejecutando el script SQL:', err);
        return;
    }

    // Consultar todos los usuarios
    db.all("SELECT * FROM usuarios", (err, rows) => {
        if (err) {
            console.error('Error en la consulta:', err);
            return;
        }

        // Mostrar los resultados
        rows.forEach(row => {
            console.log(row);
        });

        // Cerrar la conexión
        db.close((err) => {
            if (err) {
                console.error('Error cerrando la base de datos:', err);
            }
        });
    });
});

Node.js (ESM)

Al igual que en CommonJS, necesitarás el paquete sqlite3, pero la sintaxis de importación es diferente:

import sqlite3 from 'sqlite3';
import fs from 'fs';
import path from 'path';

const { verbose } = sqlite3;
const db_sqlite3 = verbose();

// Eliminar la base de datos si existe
const dbPath = 'test.db';
if (fs.existsSync(dbPath)) {
    fs.unlinkSync(dbPath);
}

// Crear conexión a la base de datos
const db = new db_sqlite3.Database(dbPath);

// Leer el archivo SQL
const sqlScript = fs.readFileSync('init.sql', 'utf8');

// Ejecutar el script SQL
db.exec(sqlScript, (err) => {
    if (err) {
        console.error('Error ejecutando el script SQL:', err);
        return;
    }

    // Consultar todos los usuarios
    db.all("SELECT * FROM usuarios", (err, rows) => {
        if (err) {
            console.error('Error en la consulta:', err);
            return;
        }

        // Mostrar los resultados
        rows.forEach(row => {
            console.log(row);
        });

        // Cerrar la conexión
        db.close((err) => {
            if (err) {
                console.error('Error cerrando la base de datos:', err);
            }
        });
    });
});

PHP

En php necesitarás instalar la extensión sqlite3 con apt install php-sqlite3:

<?php
$dbPath = 'test.db';
if (file_exists($dbPath)) {
    unlink($dbPath);
}

$db = new SQLite3($dbPath);

$sqlScript = file_get_contents('init.sql');

$db->exec($sqlScript);

$result = $db->query("SELECT * FROM usuarios");
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
    print_r($row);
}

$db->close();
?>