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 |
|---|---|
| 1 | sqlite3.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. |
| 2 | connection.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. |
| 3 | cursor.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)) |
| 4 | connection.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. |
| 5 | cursor.executemany(sql, seq_of_parameters) Esta rutina ejecuta un comando SQL para todos los parámetros o mapeos en seq_of_parameters. |
| 6 | connection.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. |
| 7 | cursor.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. |
| 8 | connection.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. |
| 9 | connection.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. |
| 10 | connection.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. |
| 11 | connection.rollback() Este método revierte los cambios realizados en la base de datos desde la última llamada a commit(). |
| 12 | connection.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! |
| 13 | cursor.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. |
| 14 | cursor.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. |
| 15 | cursor.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
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
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
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 correctamenteOperación SELECT
El siguiente programa Python muestra cómo obtener y mostrar registros de la tabla COMPANY creada anteriormente:
#!/usr/bin/pythonEjemplo
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