SQLite es una biblioteca basada en lenguaje C que proporciona un motor de base de datos SQL portátil y sin servidor. Tiene una arquitectura basada en archivos; por lo tanto, lee y escribe en un disco. Dado que SQLite es una base de datos de configuración cero, no se necesita instalación ni configuración antes de su uso. A partir de Python 2.5.x, SQLite3 viene por defecto con python.
En este artículo, discutiremos los tipos de datos de SQLite y sus tipos de Python correspondientes .
Clase de almacenamiento en SQLite
Una clase de almacenamiento puede llamarse una colección de tipos de datos similares. SQLite proporciona las siguientes clases de almacenamiento:
Clase de almacenamiento |
valor almacenado |
---|---|
NULO |
NULO |
ENTERO |
Entero con signo (1, 2, 3, 4, 5 u 8 bytes según la magnitud) |
REAL |
Valor de coma flotante (números de coma flotante IEEE de 8 bytes) |
TEXTO |
String de TEXTO (codificada en UTF-8, UTF-16BE o UTF-16LE |
BLOB (objeto binario grande) |
Los datos se almacenan exactamente como se ingresaron, generalmente en formato binario |
El término clase de almacenamiento se puede usar conjuntamente con tipo de datos .
Tipos de datos de Python correspondientes
Los tipos de datos de SQLite y sus tipos de Python correspondientes son los siguientes
Clase de almacenamiento |
Tipo de datos de Python |
---|---|
NULO |
Ninguna |
ENTERO |
En t |
REAL |
flotar |
TEXTO |
calle |
GOTA |
bytes |
La función type() se puede usar en python para obtener la clase de un argumento. En el programa a continuación, la función type() se usa para imprimir las clases de cada valor que almacenamos en una base de datos.
Nota: El programa a continuación utiliza el logotipo de GeeksforGeeks como logo.png de esta página para una demostración.
Tomemos un ejemplo en el que estamos creando una base de datos con el nombre ‘gfg’ y luego creamos una tabla llamada exam_hall que tiene algunas columnas que son las siguientes:
- NOMBRE (TEXTO),
- PIN (ENTERO),
- OCUPACIÓN (REAL),
- LOGOTIPO (BLOB).
Luego insertamos algunas filas en él y verificamos los tipos de datos de los valores obtenidos con la ayuda de consultas SQL en Python.
Python3
# Python3 program to demonstrate SQLite3 datatypes # and corresponding Python3 types # import the sqlite3 package import sqlite3 # create connection to database cnt = sqlite3.connect('gfg.db') # Create a exam_hall relation cnt.execute('''CREATE TABLE exam_hall( NAME TEXT, PIN INTEGER, OCCUPANCY REAL, LOGO BLOB);''') # Open the logo file in read, binary mode # read the image as binary data into a variable fileh = open('/content/JSBinCollaborativeJavaScriptDebugging6-300x160.png', 'rb') img = fileh.read() # Insert tuples for the relation cnt.execute('''INSERT INTO exam_hall VALUES( 'centre-a',1125,98.6,?)''', (img,)) cnt.execute('''INSERT INTO exam_hall VALUES( NULL,1158,80.5,?)''', (img,)) # Query the data, print the data and its type # note: Printing the image binary data is impractical due to its huge size # instead number of bytes are being printed using len() cursor = cnt.execute('''SELECT * FROM exam_hall;''') for i in cursor: print(str(i[0])+" "+str(i[1])+" "+str(i[2])+" "+str(len(i[3]))) print(str(type(i[0]))+" "+str(type(i[1]))+" " + str(type(i[2]))+" "+str(type(i[3]))+"\n")
Producción:
A partir de la salida de este programa, se pueden hacer las siguientes observaciones:
- ‘centre-a’ que se insertó como TEXT ha sido interpretado por python como str
- 1125, 1158 que se insertaron como INTEGER han sido interpretados por python como int
- 98.6, 80.5 que se insertaron como REAL han sido interpretados por python como flotantes
- NULL fue interpretado por python como NoneType
- La imagen del logotipo que se insertó en formato binario como BLOB ha sido interpretada por python como bytes .