Python SQLite: trabajar con fecha y fecha y hora

SQLite no es compatible con el almacenamiento de fecha y hora integrado en una clase, pero SQLite nos permite trabajar con tipos de marcas de tiempo. Podemos almacenar y recuperar información de fecha y hora de Python almacenada en las tablas de la base de datos SQLite convirtiéndolas a tipos de fecha y hora de Python y viceversa .

Al insertar el valor de fecha y hora, el módulo python sqlite3 convierte la fecha y hora en formato de string. Y al recuperar valores de fecha y hora de tablas SQLite, el módulo sqlite3 los convierte en un objeto de string. Pero no queremos tipo de string. Queremos que la fecha y hora se almacene en el tipo DateTime. Para eso, necesitamos usar detect_types ya que toma PARSE_DECLTYPES y PARSE_COLNAMES como argumentos en el método de conexión del módulo sqlite3.

Sintaxis: connect(‘NOMBRE DE LA BASE DE DATOS’,detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)

sqlite3.PARSE_DECLTYPES: el módulo sqlite3 analiza el tipo declarado para cada columna que devuelve y luego usa el diccionario de convertidores de tipos para ejecutar la función de conversión registrada para ese tipo allí.

sqlite3.PARSE_COLNAMES: la interfaz SQLite analiza el nombre de columna para cada columna que devuelve. Utilizará el diccionario de convertidores y luego utilizará la función de convertidor que se encuentra allí para devolver el valor.

Inserción de datos de fecha y fecha y hora

Primero, necesitamos importar el módulo de fecha y hora y para obtener la información de fecha y hora actual, ahora se puede usar la función () . Luego almacenan la información de fecha y hora en una variable, por lo que se puede usar para insertar fecha y hora en la tabla SQLite. Para almacenar la información de fecha y hora en la tabla, necesitamos usar el tipo de datos de la columna como ‘TIMESTAMP’.

column_name TIMESTAMP

El siguiente código crea una base de datos ‘StudentAssignment.db’ y una tabla ‘ASSIGNMENT’. El código también inserta los datos en la tabla con información de fecha y hora.

Python3

import datetime
import sqlite3
 
# get the current datetime and store it in a variable
currentDateTime = datetime.datetime.now()
 
# make the database connection with detect_types
connection = sqlite3.connect('StudentAssignment.db',
                             detect_types=sqlite3.PARSE_DECLTYPES |
                             sqlite3.PARSE_COLNAMES)
cursor = connection.cursor()
 
# create table in database
createTable = '''CREATE TABLE ASSIGNMENT (
    StudentId INTEGER,
    StudentName VARCHAR(100),
    SubmissionDate TIMESTAMP);'''
cursor.execute(createTable)
 
# create query to insert the data
insertQuery = """INSERT INTO ASSIGNMENT
    VALUES (?, ?, ?);"""
 
# insert the data into table
cursor.execute(insertQuery, (1, "Virat Kohli",
                             currentDateTime))
cursor.execute(insertQuery, (2, "Rohit Pathak",
                             currentDateTime))
print("Data Inserted Successfully !")
 
# commit the changes,
# close the cursor and database connection
connection.commit()
cursor.close()
connection.close()

Producción:

Data Inserted Successfully !

Recuperar datos de fecha y fecha y hora

Para recuperar la información de fecha y hora almacenada de las tablas de la base de datos, simplemente podemos usar la consulta de selección y podemos acceder a los datos de las filas individuales. Aquí, para la recuperación de datos y para verificar los tipos de datos en los que se almacenan los datos, necesitamos usar detect_types como argumentos en el método de conexión del módulo sqlite3.

El siguiente código recupera el registro almacenado de la tabla ‘ASIGNACIÓN’. El registro contiene información de tipo ‘datetime’. 

Python3

import datetime
import sqlite3
 
# make a database connection and cursor object
connection = sqlite3.connect('StudentAssignment.db',
                             detect_types=sqlite3.PARSE_DECLTYPES |
                             sqlite3.PARSE_COLNAMES)
cursor = connection.cursor()
 
# select query to retrieve data
cursor.execute("SELECT * from ASSIGNMENT where StudentId = 2")
fetchedData = cursor.fetchall()
 
# to access specific fetched data
for row in fetchedData:
    StudentID = row[0]
    StudentName = row[1]
    SubmissionDate = row[2]
    print(StudentName, ", ID -",
          StudentID, "Submitted Assignments")
    print("Date and Time : ",
          SubmissionDate)
    print("Submission date type is",
          type(SubmissionDate))
 
# commit the changes,
# close the cursor and database connection
cursor.close()
connection.close()

Producción:

Como podemos ver en el resultado cuando recuperamos los datos de envío de los estudiantes de la tabla ‘ASIGNACIÓN’. Accedíamos a cada fila de la tabla y las imprimíamos en un mensaje específico. La primera línea contiene el nombre del estudiante y la identificación, en la segunda línea imprimimos la fecha y hora en la que el estudiante envió la tarea, y en la tercera línea imprimimos el tipo de datos almacenados, que es el tipo de fecha y hora que almacenamos en la tabla, es decir, ‘datetime.datetime’. 

Publicación traducida automáticamente

Artículo escrito por rohitpathak9665 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 *