SQLite - Python

Instalación

SQLite3 se puede integrar con Python usando el módulo sqlite3. El módulo sqlite3 fue escrito por Gerhard Haring. Proporciona una interfaz SQL compatible con la especificación DB-API 2.0 descrita por PEP 249. No necesita instalar el módulo por separado, porque Python 2.5.x y versiones posteriores ya lo incluyen de forma predeterminada.

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

API del módulo sqlite3 de Python

Los siguientes son programas importantes del módulo sqlite3 que pueden satisfacer sus necesidades al usar la base de datos SQLite en programas Python. Si necesita más detalles, consulte la documentación oficial del módulo sqlite3 de Python.

N.°API y descripción
1sqlite3.connect(database [,timeout ,other optional arguments])

Esta API abre una conexión al archivo de base de datos SQLite database. Puede usar ":memory:" para abrir una conexión de base de datos a database en RAM, en lugar de abrirla en el disco. Si la base de datos se abre correctamente, devuelve un objeto de conexión.

Cuando una base de datos es accedida por múltiples conexiones y una de ellas modifica la base de datos, la base de datos SQLite se bloquea hasta que la transacción se confirma. El parámetro timeout representa el tiempo que la conexión espera el bloqueo hasta que ocurra una excepción de desconexión. El valor predeterminado del parámetro timeout es 5.0 (5 segundos).

Si el nombre de base de datos filename dado no existe, la llamada creará una base de datos. Si no desea crear la base de datos en el directorio actual, puede especificar un nombre de archivo con una ruta, de modo que pueda crear la base de datos en cualquier lugar.

2connection.cursor([cursorClass])

Esta rutina crea uncursor, que se utilizará en la programación de bases de datos en Python. Este método acepta un único parámetro opcional, cursorClass. Si se proporciona este parámetro, debe ser una clase cursor personalizada que herede de sqlite3.Cursor.

3cursor.execute(sql [, optional parameters])

Esta rutina ejecuta una sentencia SQL. La sentencia SQL puede ser parametrizada (es decir, usar marcadores de posición en lugar del texto SQL). El módulo sqlite3 admite dos tipos de marcadores de posición: el signo de interrogación y los marcadores de posición nombrados (estilo nombrado).

Por ejemplo: cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql [, optional parameters])

Esta rutina es un atajo del método execute proporcionado por el objeto cursor; crea un objeto cursor intermedio llamando al método cursor y, a continuación, llama al método execute del cursor con los parámetros dados.

5cursor.executemany(sql, seq_of_parameters)

Esta rutina ejecuta un comando SQL para todos los parámetros o mapeos en seq_of_parameters.

6connection.executemany(sql[, parameters])

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

7cursor.executescript(sql_script)

Esta rutina, una vez que recibe un script, ejecuta múltiples sentencias SQL. Primero ejecuta una sentencia COMMIT y luego ejecuta el script SQL pasado como argumento. Todas las sentencias SQL deben estar separadas por;punto y coma.

8connection.executescript(sql_script)

Esta rutina es un atajo de un objeto cursor intermedio creado llamando al método cursor, y luego llama al método executescript del cursor con los parámetros dados.

9connection.total_changes()

Esta rutina devuelve el número total de filas de la base de datos que han sido modificadas, insertadas o eliminadas desde que se abrió la conexión de base de datos.

10connection.commit()

Este método confirma la transacción actual. Si no llama a este método, cualquier acción realizada desde su última llamada a commit() no será visible para otras conexiones de base de datos.

11connection.rollback()

Este método revierte los cambios realizados en la base de datos desde la última llamada a commit().

12connection.close()

Este método cierra la conexión de base de datos. Tenga en cuenta que esto no llama automáticamente a commit(). Si cierra la conexión de base de datos sin haber llamado antes al método commit(), ¡todos los cambios que haya realizado se perderán!

13cursor.fetchone()

Este método obtiene la siguiente fila del conjunto de resultados de la consulta y devuelve una secuencia única; cuando no hay más datos disponibles, devuelve None.

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

Este método obtiene el siguiente grupo de filas del conjunto de resultados de la consulta y devuelve una lista. Cuando no hay más filas disponibles, devuelve una lista vacía. Este método intenta obtener tantas filas como sea posible según lo especificado por el parámetro size.

15cursor.fetchall()

Esta rutina obtiene todas las filas (restantes) del conjunto de resultados de la consulta y devuelve una lista. Cuando no hay filas disponibles, devuelve una lista vacía.

Conectar a la base de datos

El siguiente código 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.

Ejemplo

#!/usr/bin/python

import sqlite3

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

print ("Base de datos abierta correctamente")

Aquí, también puede sustituir el nombre de la base de datos por un nombre específico:memory:, de modo que se creará una base de datos en RAM. Ahora, ejecutemos el programa anterior para crear nuestra base de datos en el directorio actualtest.db. Puede cambiar la ruta según sea necesario. Guarde el código anterior en el archivo sqlite.py y ejecútelo como se muestra a continuación. Si la base de datos se crea correctamente, se mostrará el siguiente mensaje:

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

Crear tabla

El siguiente fragmento de código Python se utilizará para crear una tabla en la base de datos creada anteriormente:

Ejemplo

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print ("Base de datos abierta correctamente")
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);'''
)
print ("Tabla de datos creada correctamente")
conn.commit()
conn.close()

Cuando se ejecute el programa anterior,test.dbse creará la tabla COMPANY y se mostrará el siguiente mensaje:

Base de datos abierta correctamente
Tabla de datos creada correctamente

Operación INSERT

El siguiente programa Python muestra cómo crear registros en la tabla COMPANY creada anteriormente:

Ejemplo

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print ("Base de datos abierta correctamente")

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

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

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

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

conn.commit()
print ("Datos insertados correctamente")
conn.close()

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

Base de datos abierta correctamente Datos insertados correctamente

Operación SELECT

El siguiente programa Python muestra cómo obtener y mostrar registros de la tabla COMPANY creada anteriormente:

#!/usr/bin/python

Ejemplo

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print ("Base de datos abierta correctamente")

cursor = c.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 ("Operación de datos realizada correctamente")
conn.close()

Cuando se ejecute el programa anterior, producirá el siguiente resultado:

数据库打开成功
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

数据操作成功

Operación UPDATE

El siguiente código Python muestra cómo usar la sentencia UPDATE para actualizar cualquier registro y luego obtener y mostrar los registros actualizados de la tabla COMPANY:

Ejemplo

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print ("Base de datos abierta correctamente")

c.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 ("Operación de datos realizada correctamente")
conn.close()

Cuando se ejecute el programa anterior, producirá el siguiente resultado:

数据库打开成功
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

数据操作成功

Operación DELETE

El siguiente código Python muestra cómo usar la sentencia DELETE para eliminar cualquier registro y luego obtener y mostrar los registros restantes de la tabla COMPANY:

Ejemplo

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print ("Base de datos abierta correctamente")

c.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 ("Operación de datos realizada correctamente")
conn.close()

Cuando se ejecute el programa anterior, producirá el siguiente resultado:

数据库打开成功
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

数据操作成功
Otras extensiones