Cambiar el tiempo de espera de conexión de SQLite usando Python

En este artículo, discutiremos cómo cambiar el tiempo de espera de conexión de SQLite cuando se conecta desde Python.

¿Qué es un tiempo de espera de conexión y qué lo causa?

Un tiempo de espera de conexión es un error que ocurre cuando un servidor tarda demasiado en responder a la solicitud de un usuario.

Los tiempos de espera de conexión suelen ocurrir cuando hay varias conexiones activas a una base de datos y una de ellas está realizando una operación que implica la modificación de los datos almacenados. En ese caso, las otras conexiones deben esperar hasta que se realice esa operación antes de poder realizar sus propias operaciones. Cuando ese tiempo de espera supera el límite de tiempo, provoca un tiempo de espera de conexión.

Cambiar el valor de Tiempo de espera de conexión

Este es un fragmento de código de Python de muestra que usa el paquete sqlite3 para crear y conectarse a una base de datos y luego generar su versión. 

Acercarse

  • Primero, se importa el paquete sqlite3 incorporado.
  • A continuación, usamos el método connect de la clase conector para conectarnos a la base de datos, pasando su nombre como parámetro.
  • Después de eso, utilizando el objeto de cursor de la clase de conector, debemos crear una instancia de cursor que pueda ejecutar nuestras consultas.
  • El método de ejecución luego ejecuta la consulta y devuelve el resultado.
  • A continuación, los resultados se extraen del cursor mediante el método fetchall .
  • Y finalmente, independientemente de si la consulta se ejecutó con éxito o no, tanto el cursor de la base de datos como la conexión deben cerrarse.

Python3

# import module
import sqlite3
 
try:
    # establish connection
    sqliteConnection = sqlite3.connect('sqlite.db')
     
    # create cursor object
    cursor = sqliteConnection.cursor()
    print('Database Initialization and Connection successful')
     
    # display version
    query = 'select sqlite_version();'
    cursor.execute(query)
     
    # get data
    record = cursor.fetchall()
    print(f'SQLite Version - {record}')
    cursor.close()
 
except sqlite3.Error as error:
    print('Error occurred - ', error)
     
finally:
    # If the connection was established then close it
    if sqliteConnection:
        sqliteConnection.close()
        print('SQLite Connection closed')

Producción:

Normalmente, el fragmento de código anterior funcionaría perfectamente bien. Pero cuando la base de datos ya está siendo utilizada por otro proceso, tendría que esperar hasta que se resuelva la consulta de ese proceso antes de ejecutar su propia consulta. Si ese tiempo de espera cruza el valor del tiempo de espera de la conexión, eso resulta en un Tiempo de espera de la conexión.

El valor predeterminado para el tiempo de espera de la conexión es de 5 segundos . Pero se puede cambiar en el propio método connect() . Acepta un tiempo de espera de parámetro opcional que acepta el valor del tiempo de espera de conexión en segundos. El fragmento de código ahora se ha modificado para tener un tiempo de espera de conexión de 20 segundos .

Python3

# import module
import sqlite3
 
try:
    # establish connection
    sqliteConnection = sqlite3.connect('sqlite.db', timeout=20)
 
    # create cursor object
    cursor = sqliteConnection.cursor()
    print('Database Initialization and Connection successful')
 
    # display version
    query = 'select sqlite_version();'
    cursor.execute(query)
 
    # get data
    record = cursor.fetchall()
    print(f'SQLite Version - {record}')
    cursor.close()
 
except sqlite3.Error as error:
    print('Error occurred - ', error)
 
finally:
     
    # If the connection was established then
    # close it
    if sqliteConnection:
        sqliteConnection.close()
        print('SQLite Connection closed')

Producción:

En el ejemplo anterior, el programa python se conectará a la base de datos SQLite durante 20 segundos ya que el parámetro de tiempo de espera en el método connect() se asigna a 20. De esta manera, se puede cambiar el tiempo de espera de la conexión SQLite cuando se conecta desde python.

Publicación traducida automáticamente

Artículo escrito por amlankumarnandy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *