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