El propósito de este tutorial Python SQLite es demostrar cómo desarrollar aplicaciones de base de datos Python con la base de datos SQLite. Aprenderá cómo realizar operaciones de base de datos SQLite desde Python.
como todos saben, SQLite es una biblioteca de lenguaje C que implementa un motor de base de datos SQL que es relativamente rápido, sin servidor y autónomo, altamente confiable. SQLite es el motor de base de datos más utilizado en el entorno de prueba (consulte la página de inicio de SQLite)., SQLite viene incorporado con la mayoría de las computadoras y dispositivos móviles y navegadores. El módulo oficial de Python sqlite3 nos ayuda a trabajar con la base de datos SQLite.
El módulo Python sqlite3 se adhiere a la especificación Python Database API V2.0 (PEP 249). PEP 249 proporciona una interfaz SQL que ha sido diseñada para fomentar y mantener la similitud entre los módulos Python que se utilizan para acceder a las bases de datos.,
este tutorial se centra principalmente en: –
- conectarse a la base de datos SQLite desde Python y crear una base de datos y tablas SQLite
- A continuación, cubriremos los tipos de datos SQLite y sus correspondientes tipos de Python
- A continuación, aprenderemos cómo realizar la operación SQLite CRUD, es decir,,ieve digital data in SQLite usando Python
- A continuación, cubrirá el manejo de transacciones SQLite, creando y llamando funciones SQLite y técnicas de manejo de errores para desarrollar programas python robustos con base de datos SQLite
- También le permitirá saber cómo crear y administrar una base de datos en memoria y convertir valores SQLite a tipos de Python personalizados
- Tomar una copia de seguridad de la base de datos SQLite desde Python
veamos cada sección ahora.,
Python SQLite Connection
Esta sección le permite saber cómo crear una base de datos SQLite y conectarse a ella a través de python utilizando el módulo sqlite3.
para establecer una conexión a SQLite, debe especificar el nombre de la base de datos que desea conectar. Si especifica el nombre del archivo de base de datos que ya se presenta en el disco, se conectará a él. Pero si su archivo de base de datos SQLite especificado no existe, SQLite crea una nueva base de datos para usted.,
debe seguir los siguientes pasos para conectarse a sqlite
- Use el método
connect()
de un módulo sqlite3 y pase el nombre de la base de datos como argumento. - cree un objeto cursor utilizando el objeto de conexión devuelto por el método connect para ejecutar consultas SQLite desde Python.
- cierre el objeto Cursor y el objeto de conexión a la base de datos SQLite cuando termine el trabajo.
- captura la excepción de la base de datos si hay alguna que pueda ocurrir durante este proceso de conexión.
el siguiente programa Python crea un nuevo archivo de base de datos «sqlite_python.,db » e imprime los detalles de la versión SQLite.
debe obtener la siguiente salida después de conectarse a SQLite desde Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Entender el SQLite Código de conexión en detalle
importar sqlite3
- Esta línea de las importaciones de la sqlite3 módulo en nuestro programa. Usando las clases y métodos definidos en el módulo sqlite3 podemos comunicarnos con la base de datos SQLite.
sqlite3.,connect ()
- Usando el método
connect()
podemos crear una conexión a la base de datos SQLite. Este método devuelve el objeto de conexión SQLite. - El objeto de conexión no es SEGURO para subprocesos. el módulo sqlite3 no permite compartir conexiones entre hilos. Si todavía intenta hacerlo, obtendrá una excepción en tiempo de ejecución.
- El método
connect()
acepta varios argumentos. En nuestro ejemplo, pasamos el argumento nombre de base de datos a connect.
cursor = sqliteConnection.,cursor ()
- usando un objeto de conexión podemos crear un objeto cursor que nos permite ejecutar comandos/consultas SQLite a través de Python.
- Podemos crear tantos cursores como queramos a partir de un único objeto de conexión. Al igual que el objeto de conexión, este objeto cursor tampoco es SEGURO para subprocesos. el módulo sqlite3 no permite compartir cursores entre hilos. Si todavía intenta hacerlo, obtendrá una excepción en tiempo de ejecución.
después de esto, creamos una consulta SQLite para obtener la versión de la base de datos.
cursor.,execute ()
- Usando el método execute del cursor podemos ejecutar una operación o consulta de base de datos desde Python. El método
cursor.execute()
toma una consulta SQLite como parámetro y devuelve el conjunto de resultados, es decir, nada más que una fila de base de datos. - podemos recuperar el resultado de la consulta de resultSet utilizando métodos de cursor como
- en nuestro ejemplo, estamos ejecutando una consulta
SELECT version();
para obtener la versión SQLite.,
try-except-finally block: colocamos todo nuestro código en el bloque try-except para capturar las excepciones y errores de la base de datos SQLite que pueden ocurrir durante este proceso.
- usando la clase
sqlite3.Error
del módulo sqlite3, podemos manejar cualquier error y excepción de la base de datos que pueda ocurrir mientras se trabaja con SQLite desde Python. - usando este enfoque podemos hacer que nuestra aplicación sea robusta. La clase
sqlite3.Error
nos ayuda a entender el error en detalle. Devuelve un mensaje de error y un código de error.
cursor.cerrar () y conexión.,close ()
- Siempre es una buena práctica cerrar el cursor y el objeto de conexión Una vez que se complete el trabajo para evitar problemas con la base de datos.
Crear tabla SQLite desde Python
en esta sección, aprenderemos cómo crear una tabla en la base de datos SQLite desde Python utilizando el módulo sqlite3. Create a table statement es una consulta DDL que permite ver cómo ejecutarla desde Python.
en este ejemplo, estamos creando una tabla «SqliteDb_developers» dentro de «sqlite_python.db » Base de datos.,
pasos para crear una tabla en SQLite desde Python: –
- conéctese a SQLite usando un
sqlite3.connect()
. He explicado el código de conexión SQLite al principio de este artículo. - Prepare una consulta create table.
- ejecute la consulta usando un
cursor.execute(query)
- Al final, cierre la conexión de la base de datos SQLite y el objeto cursor.,
Salida:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite tipos de datos y su correspondiente Python tipos de
Antes de continuar en la ejecución de SQLite operaciones CRUD de Python primero entender SQLite tipo de datos y sus correspondientes Python tipos, que nos ayudará a almacenar y leer datos de la tabla SQLite.
SQLite database engine tiene varias clases de almacenamiento para almacenar valores. Cada valor almacenado en una base de datos SQLite tiene una de las siguientes clases de almacenamiento o tipos de datos.,
SQLite DataTypes:
- NULL: – el valor es un valor NULL.
- entero: – para almacenar el valor numérico. El entero almacenado en 1, 2, 3, 4, 6, o 8 bytes dependiendo de la magnitud del número.
- REAL: – el valor es un valor de punto flotante, por ejemplo, 3.14 valor de PI
- texto:-el valor es una cadena de texto, valor de texto almacenado utilizando la codificación UTF-8, UTF-16BE o UTF-16LE.
- BLOB: – el valor es un blob de datos, es decir, datos binarios. Se utiliza para almacenar imágenes y archivos.
los siguientes tipos de Python se convierten a SQLite sin ningún problema., Por lo tanto, cuando esté modificando o leyendo desde la tabla SQLite realizando operaciones CRUD, recuerde esta tabla.,
Python type | SQLite type |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Perform SQLite CRUD Operations from Python
Most of the time, we need to manipulate the SQLite table’s data from Python. To perform these data manipulations, we can execute DML queries i.e.,, SQLite insertar, actualizar, eliminar operaciones de Python.
ahora, conocemos la tabla y sus detalles de columna, así que pasemos a las operaciones crud. He creado un tutorial separado sobre cada operación para cubrirlo en detalle. Vamos a ver cada sección.
- insertar datos en la tabla SQLite desde Python – en esta sección, aprenderemos cómo ejecutar el comando INSERT desde python para insertar registros en la tabla SQLite.
- leer los datos de la tabla SQLite desde Python – en este artículo, aprenderemos cómo ejecutar la consulta SQLite SELECT desde una aplicación Python para obtener las filas de la tabla., Además, le informaré cómo usar los métodos
fetchall()
,fetchmany()
yfetchone()
de una clase cursor para obtener filas limitadas de la tabla para mejorar el rendimiento. - actualizar datos de la tabla SQLite desde Python – en esta sección, aprenderemos cómo ejecutar la consulta de actualización desde python para modificar los registros de la tabla SQLite.
- Eliminar datos de la tabla SQLite de Python – en esta sección, aprenderemos cómo ejecutar la consulta Eliminar de python para eliminar registros de la tabla SQLite.,
ejecute el archivo SQL (scripts) utilizando la función executescript del cursor
Los scripts SQLite son útiles para la mayor parte del trabajo diario. SQLite script es un conjunto de comandos SQL guardados como un archivo (en.formato sql).
un script SQLite contiene una o más operaciones SQL que luego ejecutará desde su línea de comandos cuando sea necesario.
a continuación se muestran los pocos escenarios comunes donde podemos usar scripts SQLite
- Hacer copias de seguridad de varias bases de datos a la vez.
- comparar recuentos de filas en tablas de dos bases de datos diferentes con el mismo esquema.,
- mantenga todos los comandos SQL de crear tabla en un script de base de datos. Así que puede crear esquema de base de datos en cualquier servidor.
puede ejecutar su script desde la línea de comandos SQLite utilizando el .leer comando, como este:
sqlite> .read mySQLiteScript.sql
para este ejemplo, he creado un script SQLite de muestra que creará dos tablas. Este es el guión que he creado.
CREATE TABLE hardware ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);CREATE TABLE software ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);
ahora veamos cómo ejecutar un script SQLite desde Python.
salida: tablas SQLite creadas ejecutando un script SQL desde Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Nota: Después de conectar a SQLite, Podemos leer todo el contenido de una SQLite archivo de secuencia de comandos almacenados en el disco y copiado en una cadena python variable. Luego llamamos al método cursor.executscript(script)
para ejecutar todas las sentencias SQL en una llamada.
insertar/recuperar datos digitales en SQLite usando Python
- En esta sección, le informaré cómo insertar o guardar cualquier información digital, como un archivo, imagen, video o una canción como datos BLOB en la tabla SQLite de python.,
- Además, aprenda cómo podemos leer un archivo, imagen, video, canción o cualquier dato digital almacenado en SQLite usando Python.
consulte nuestra guía completa sobre Python SQLite BLOB para insertar y recuperar archivos e imágenes.
crear o redefinir funciones SQLite usando Python
El módulo Python sqlite3 nos proporciona la capacidad de crear y redefinir Funciones SQL desde Python. He creado un tutorial separado para cubrirlo en detalle. Consulte cómo crear y redefinir Funciones SQL desde Python.,
consulte nuestra guía completa sobre Crear o redefinir funciones SQLite desde Python.
trabajando con tipos de fecha y hora SQLite en Python y viceversa
a veces necesitamos insertar o leer el valor de fecha o fecha y hora de una tabla SQLite. Por lo tanto, si está trabajando con valores de fecha o marca de tiempo, consulte nuestro tutorial separado sobre cómo trabajar con valores de fecha y hora SQLite en Python.
excepciones de base de datos SQLite
excepción sqlite3.Advertencia
- una subclase de excepción. Y puedes ignorarlo si quieres que no detenga la ejecución.,
excepción sqlite3.Error
- La clase base de las otras excepciones en el módulo sqlite3. Es una subclase de Exception.
excepción sqlite3.DatabaseError
- excepción planteada para errores relacionados con la base de datos.
Ejemplos: si intenta abrir un archivo como una base de datos sqlite3 que no es un archivo de base de datos, obtendrá sqlite3.DatabaseError: el archivo está cifrado o no es una base de datos
excepción sqlite3.IntegrityError
- subclase de un DatabaseError., Obtendrá esta excepción cuando la integridad relacional de la base de datos se vea afectada, por ejemplo, una comprobación de clave foránea falla.
excepción sqlite3.ProgrammingError
- También es una subclase de DatabaseError. Esta excepción surgió debido a errores de programación, por ejemplo, crear una tabla con la misma que ya existe, error de sintaxis en las consultas SQL.
excepción sqlite3.OperationalError
- También es una subclase de DatabaseError. Este error no está bajo nuestro control. Esta excepción surgió para errores relacionados con el funcionamiento de la base de datos.,
- Ejemplos: una desconexión accidental, un servidor caído, se produce un tiempo de espera, los problemas de origen de datos. server down
Exception sqlite3.NotSupportedError
- obtendrá una excepción cuando se usó la API de la base de datos que no es compatible con la base de datos.
- Ejemplo: llamar al método rollback () en una conexión que no admite la transacción. Llamar a commit después de crear el comando table.,
por lo que siempre será aconsejable escribir todo el código de operación de la base de datos en el bloque try para que pueda detectar excepciones en excepto bloque si las hay y tomar las acciones correctivas en su contra.
por ejemplo, intentemos insertar datos en una tabla que no existe en la base de datos SQLite e imprimir la pila de excepciones completa.,
salida:
cambiar el tiempo de espera de conexión SQLite cuando se conecta desde Python
puede ser el escenario cuando múltiples conexiones acceden a una base de datos SQLite, y uno de los procesos que realiza alguna operación de modificación de datos en la base de datos, para realizar la conexión de modificación de datos debe tener bloqueo, es decir, la base de datos SQLite está bloqueada hasta que se confirme esa transacción. El parámetro timeout que especificamos al conectarnos a la base de datos determina cuánto tiempo debe esperar la conexión para que el bloqueo desaparezca hasta que aparezca una excepción.,
el valor predeterminado para el parámetro timeout es 5.0 (cinco segundos). No es necesario especificarlo mientras se conecta porque es un valor predeterminado. es decir, siempre que se conecte a SQLite desde Python y no obtenga una respuesta en 5 segundos, su programa generará una excepción. Pero si se enfrenta a un problema de tiempo de espera de conexión y desea aumentarlo, puede hacerlo utilizando un argumento de tiempo de espera de una función sqlite3.connect
.
veamos cómo cambiar el valor de tiempo de espera al conectar SQLite desde Python.,
salida:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
identificar los cambios totales desde que se abrió la conexión a la base de datos SQLite
para fines de auditoría o estadísticas si desea encontrar el número 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, puede usar el método connection.total_changes
de un módulo sqlite3 de Python.
el método connection.total_changes
devuelve el número total de filas de la base de datos que se han visto afectadas. Veamos el ejemplo de Python para encontrar los cambios totales que se han hecho desde que se abrió la conexión a la base de datos.,
salida:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
tomar una copia de seguridad de la base de datos SQLite desde Python
El módulo Python sqlite3 proporciona una función para tomar una copia de seguridad de la base de datos SQLite. Usando un método connection.backup()
puede tomar la copia de seguridad de la base de datos SQLite.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Esta función toma una copia de seguridad de la base de datos SQLite, y se escribirá una copia en el argumento target, que debe ser otra instancia de conexión., De forma predeterminada, o cuando las páginas son 0 o un entero negativo, toda la base de datos se copia en un solo paso; de lo contrario, el método realiza una copia en bucle hasta las páginas a la vez.
el argumento name especifica la base de datos que desea copiar. El argumento sleep define el número de segundos de espera entre intentos sucesivos de hacer una copia de seguridad de las páginas restantes de una base de datos. el argumento sleep se puede especificar como un entero o como un valor de punto flotante.
veamos el ejemplo para copiar una base de datos existente en otra.,
salida:
Nota:
- Después de conectar a SQLite, abrimos ambas bases de datos utilizando dos conexiones diferentes.
- a continuación, ejecutamos un método
connection.backup()
utilizando una primera instancia de conexión. Además, especificamos el número de páginas de la base de datos a copiar en cada iteración.
proyecto de ejercicio Python SQLite
por favor, resuelva nuestro ejercicio de programación de bases de datos Python para dominar la programación de bases de datos en Python.
Leave a Reply