Saltar al contenido

SQLite – Python

octubre 21, 2021

En este capítulo, aprenderá a usar SQLite en programas Python.

Instalación

SQLite3 se puede integrar con Python usando el módulo sqlite3, que fue escrito por Gerhard Haring. Proporciona una interfaz SQL compatible con la especificación DB-API 2.0 descrita por PEP 249. No es necesario instalar este módulo por separado porque se envía de forma predeterminada junto con la versión 2.5.x de Python en adelante.

Para usar el módulo sqlite3, primero debe crear un objeto de conexión que represente la base de datos y luego, opcionalmente, puede crear un objeto cursor, que lo ayudará a ejecutar todas las declaraciones SQL.

API del módulo Python sqlite3

A continuación se presentan importantes rutinas del módulo sqlite3, que pueden ser suficientes para su requisito de trabajar con la base de datos SQLite desde su programa Python. Si está buscando una aplicación más sofisticada, puede consultar la documentación oficial del módulo Python sqlite3.

No Señor. API y descripción
1

sqlite3.connect (base de datos [,timeout ,other optional arguments])

Esta API abre una conexión al archivo de base de datos SQLite. Puede utilizar «: memory:» para abrir una conexión de base de datos a una base de datos que reside en la RAM en lugar de en el disco. Si la base de datos se abre correctamente, devuelve un objeto de conexión.

Cuando varias conexiones acceden a una base de datos y uno de los procesos modifica la base de datos, la base de datos SQLite se bloquea hasta que se confirma la transacción. El parámetro de tiempo de espera especifica cuánto tiempo debe esperar la conexión para que desaparezca el bloqueo hasta generar una excepción. El valor predeterminado para el parámetro de tiempo de espera es 5,0 (cinco segundos).

Si el nombre de la base de datos proporcionado no existe, esta llamada creará la base de datos. También puede especificar el nombre de archivo con la ruta requerida si desea crear una base de datos en cualquier otro lugar excepto en el directorio actual.

2

conexión.cursor[cursorClass])

Esta rutina crea una cursor que se utilizará en toda la programación de su base de datos con Python. Este método acepta un único parámetro opcional cursorClass. Si se proporciona, debe ser una clase de cursor personalizada que amplíe sqlite3.Cursor.

3

cursor.execute (sql [, optional parameters])

Esta rutina ejecuta una instrucción SQL. La instrucción SQL puede parametrizarse (es decir, marcadores de posición en lugar de literales SQL). El módulo sqlite3 admite dos tipos de marcadores de posición: signos de interrogación y marcadores de posición con nombre (estilo con nombre).

Por ejemplo – cursor.execute («insertar en las personas valores (?,?)», (Quién, edad))

4

connection.execute (sql [, optional parameters])

Esta rutina es un atajo del método de ejecución anterior proporcionado por el objeto de cursor y crea un objeto de cursor intermedio llamando al método de cursor, luego llama al método de ejecución del cursor con los parámetros dados.

5

cursor.executemany (sql, seq_of_parameters)

Esta rutina ejecuta un comando SQL contra todas las secuencias de parámetros o asignaciones que se encuentran en la secuencia sql.

6

connection.executemany (sql[, parameters])

Esta rutina es un atajo que crea un objeto de cursor intermedio llamando al método cursor, luego llama al método cursor.s executemany con los parámetros dados.

7

cursor.executescript (sql_script)

Esta rutina ejecuta varias sentencias SQL a la vez proporcionadas en forma de script. Primero emite una declaración COMMIT, luego ejecuta el script SQL que obtiene como parámetro. Todas las sentencias SQL deben estar separadas por punto y coma (;).

8

connection.executescript (sql_script)

Esta rutina es un atajo que crea un objeto de cursor intermedio llamando al método del cursor, luego llama al método de ejecución del cursor con los parámetros dados.

9

connection.total_changes ()

Esta rutina devuelve el número total de filas de la base de datos que se han modificado, insertado o eliminado desde que se abrió la conexión a la base de datos.

10

connection.commit ()

Este método confirma la transacción actual. Si no llama a este método, cualquier cosa que haya hecho desde la última llamada a commit () no es visible desde otras conexiones de base de datos.

11

connection.rollback ()

Este método revierte cualquier cambio en la base de datos desde la última llamada a commit ().

12

connection.close ()

Este método cierra la conexión a la base de datos. Tenga en cuenta que esto no llama automáticamente a commit (). Si cierra la conexión de su base de datos sin llamar a commit () primero, ¡sus cambios se perderán!

13

cursor.fetchone ()

Este método obtiene la siguiente fila de un conjunto de resultados de la consulta y devuelve una sola secuencia o None cuando no hay más datos disponibles.

14

cursor.fetchmany ([size = cursor.arraysize])

Esta rutina recupera el siguiente conjunto de filas del resultado de una consulta y devuelve una lista. Se devuelve una lista vacía cuando no hay más filas disponibles. El método intenta obtener tantas filas como indique el parámetro de tamaño.

15

cursor.fetchall ()

Esta rutina recupera todas las filas (restantes) del resultado de una consulta y devuelve una lista. Se devuelve una lista vacía cuando no hay filas disponibles.

Conectarse a la base de datos

El siguiente código de Python muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará y finalmente se devolverá un objeto de base de datos.

#!/usr/bin/python

import sqlite3

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

print "Opened database successfully";

Aquí, también puede proporcionar el nombre de la base de datos como nombre especial :memoria: para crear una base de datos en RAM. Ahora, ejecutemos el programa anterior para crear nuestra base de datos. test.db en el directorio actual. Puede cambiar su ruta según sus necesidades. Mantenga el código anterior en el archivo sqlite.py y ejecútelo como se muestra a continuación. Si la base de datos se creó correctamente, mostrará el siguiente mensaje.

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

Crear una tabla

El siguiente programa de Python se utilizará para crear una tabla en la base de datos creada anteriormente.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute('''CREATE TABLE COMPANY
         (ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL,
         ADDRESS        CHAR(50),
         SALARY         REAL);''')
print "Table created successfully";

conn.close()

Cuando se ejecuta el programa anterior, creará la tabla EMPRESA en su test.db y mostrará los siguientes mensajes:

Opened database successfully
Table created successfully

INSERTAR Operación

El siguiente programa de Python muestra cómo crear registros en la tabla EMPRESA creada en el ejemplo anterior.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

Cuando se ejecute el programa anterior, creará los registros dados en la tabla EMPRESA y mostrará las siguientes dos líneas:

Opened database successfully
Records created successfully

SELECCIONAR Operación

El siguiente programa de Python muestra cómo buscar y mostrar registros de la tabla EMPRESA creada en el ejemplo anterior.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "n"

print "Operation done successfully";
conn.close()

Cuando se ejecuta el programa anterior, producirá el siguiente resultado.

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

Operación ACTUALIZAR

El siguiente código de Python muestra cómo usar la instrucción UPDATE para actualizar cualquier registro y luego buscar y mostrar los registros actualizados de la tabla EMPRESA.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "n"

print "Operation done successfully";
conn.close()

Cuando se ejecuta el programa anterior, producirá el siguiente resultado.

Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

Operación DELETE

El siguiente código de Python muestra cómo usar la instrucción DELETE para eliminar cualquier registro y luego buscar y mostrar los registros restantes de la tabla EMPRESA.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "n"

print "Operation done successfully";
conn.close()

Cuando se ejecuta el programa anterior, producirá el siguiente resultado.

Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully
close