Al usar la aplicacipon DB Browser for SQLite podemos comprobar que se ha creado la tabla y se ha agregado la información a lso campos correspondientes, para descargar el visor de tablas SQLite ir a su web oficial: https://sqlitebrowser.org/
Para insertar varios registro a la vez se usa una lista con tantas tuplas como registros se quieran ingresar. Veamos el siguiente ejemplo:
Como podemos ver los datos han sido ingresados en una sola instrucción INSERT INTO.
Leer los registros de una base de datos
Veamos el siguiente ejemplo:
import sqlite3
import os
os.system('cls')
cnAlbum=sqlite3.connect('Album')
curPuntero=cnAlbum.cursor()
#curPuntero.execute("CREATE TABLE PERSONAS (NOMBRE_PERSONA VARCHAR(50), EDAD_PERSONA INTEGER, ESTATURA INTEGER, APODO VARCHAR(30))")
#curPuntero.execute("INSERT INTO PERSONAS VALUES('César Gamboa',49,170,'César')")
'''
lstDatos=[
('Carmen Gutierrez',42,159,'Menchi'),
('Carlos Alonso',23,182,'Chacho'),
('Federica García',21,168,'Feda')
]
#curPuntero.executemany('INSERT INTO PERSONAS VALUES(?,?,?,?)',lstDatos)
'''
curPuntero.execute("SELECT * FROM PERSONAS")
lstDatos=curPuntero.fetchall()
print(f'''
El contenido de la base de datos de personas es:
{lstDatos}
'''
)
cnAlbum.commit()
cnAlbum.close()
Resultado:
El contenido de la base de datos de personas es:
[('César Gamboa', 49, 170, 'César'), ('Carmen Gutierrez', 42, 159, 'Menchi'), ('Carlos Alonso', 23, 182, 'Chacho'), ('Federica García', 21, 168, 'Feda')]
También se puede ambiar un poco el formato de visualización de los datos:
curPuntero.execute("SELECT * FROM PERSONAS")
lstDatos=curPuntero.fetchall()
print(f'''
El contenido de la base de datos de personas es:
{lstDatos}
'''
)
print('Otra manera de ver exclusivamente los nombres:')
for p in lstDatos:
print(p[0])
cnAlbum.commit()
cnAlbum.close()
Resultado:
El contenido de la base de datos de personas es:
[('César Gamboa', 49, 170, 'César'), ('Carmen Gutierrez', 42, 159, 'Menchi'), ('Carlos Alonso', 23, 182, 'Chacho'), ('Federica García', 21, 168, 'Feda')]
Otra manera de ver exclusivamente los nombres:
César Gamboa
Carmen Gutierrez
Carlos Alonso
Federica García
Creación de campos clave
Para crear campos clave basta con agregar la instruccion PRIMARY KEY luego de la definición del campo. Es importante destacar que este campo es irrepetible en toda la tabla.
Veamos el siguiente ejemplo:
import sqlite3
import os
os.system('cls')
cnConexionAlbum=sqlite3.connect("Album")
curAlbum=cnConexionAlbum.cursor()
curAlbum.execute('''
CREATE TABLE PERSONAS(
ID VARCHAR(4) PRIMARY KEY,
NOMBRE VARCHAR(50),
SEXO BOOLEAN,
EDAD INTEGER,
ESTATURA INTEGER,
APODO VARCHAR(30)
)
''')
lstPersonas=[
('ID01','César Gamboa',True,49,170,''),
('ID02','Alicia Rodríguez',False,24,179,'Aly'),
('ID03','Raúl Guzmán',True,32,168,''),
('ID04','Isabel Araujo',False,19,181,'Luchi')
]
cnConexionAlbum.executemany("INSERT INTO PERSONAS VALUES (?,?,?,?,?,?)",lstPersonas)
cnConexionAlbum.commit()
cnConexionAlbum.close()
El contenido de la tabla PERSONAS usando el visor es:
si usamos el visor para ver la estructura de la tabla podemos comprobar que el campo ID es clave, es decir del tipo PRIMARY KEY, esto lo podemos comprobar por el icono de la llave en el campo.
La manera de que el gestor de bases de datos administre automáticamente el campo ID y lo haga autoincremental se hace de la siguiente manera:
import sqlite3
import os
os.system('cls')
cnConexionAlbum=sqlite3.connect("Album")
curAlbum=cnConexionAlbum.cursor()
curAlbum.execute('''
CREATE TABLE PERSONAS(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NOMBRE VARCHAR(50),
SEXO BOOLEAN,
EDAD INTEGER,
ESTATURA INTEGER,
APODO VARCHAR(30)
)
''')
lstPersonas=[
('César Gamboa',True,49,170,''),
('Alicia Rodríguez',False,24,179,'Aly'),
('Raúl Guzmán',True,32,168,''),
('Isabel Araujo',False,19,181,'Luchi')
]
cnConexionAlbum.executemany("INSERT INTO PERSONAS VALUES (NULL,?,?,?,?,?)",lstPersonas)
cnConexionAlbum.commit()
cnConexionAlbum.close()
En el visor podemos corroborar:
Se ha asignado de manera automática un código que se incrementa automáticamente en el campo ID
Es posible indicar que un campo es unico e irrepetible sin definirlo como clave principal, veamos el siguiente ejemplo:
import sqlite3
import os
os.system('cls')
cnConexionAlbum=sqlite3.connect("Album")
curAlbum=cnConexionAlbum.cursor()
curAlbum.execute('''
CREATE TABLE PERSONAS(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NOMBRE VARCHAR(50) UNIQUE,
SEXO BOOLEAN,
EDAD INTEGER,
ESTATURA INTEGER,
APODO VARCHAR(30)
)
''')
lstPersonas=[
('César Gamboa',True,49,170,''),
('Alicia Rodríguez',False,24,179,'Aly'),
('Raúl Guzmán',True,32,168,''),
('Isabel Araujo',False,19,181,'Luchi')
]
cnConexionAlbum.executemany("INSERT INTO PERSONAS VALUES (NULL,?,?,?,?,?)",lstPersonas)
cnConexionAlbum.commit()
print('Base de datos creada satisfactoriamente...')
cnConexionAlbum.close()
Al ejecutar el script anterior podemos comprobar en el visor como el campo NOMBRE ahora tiene la propiedad UNIQUE:
Leer datos filtrados de una base de datos
Veamos el siguiente ejemplo:
import sqlite3
import os
os.system('cls')
cnConexionAlbum=sqlite3.connect("Album")
curAlbum=cnConexionAlbum.cursor()
curAlbum.execute('SELECT * FROM PERSONAS WHERE NOT SEXO')
lstPersonasFiltradas = curAlbum.fetchall()
print(f'''
***************************************************************************************
La lista de personas filtradas con el criterio sexo femenino es:
{lstPersonasFiltradas}
***************************************************************************************
Fin de los datos...
''')
cnConexionAlbum.close()
Resultado:
***************************************************************************************
La lista de personas filtradas con el criterio sexo femenino es:
[(2, 'Alicia Rodríguez', 0, 24, 179, 'Aly'), (4, 'Isabel Araujo', 0, 19, 181, 'Luchi')]
***************************************************************************************
Fin de los datos...
Como podemos comprobar se han recuperado solo los datos que coinciden con el criterio de selección en la clausula SQL, en este caso solo los registros en donde el sexo se haya establecifo como FALSE.
Actualización de un registro
Supongamos que deseamos actualizar el registro cuyo nombre es "César Gamboa" y cambiar dicho nombre por "César G. Gamboa P.", el código sería:
import os
os.system('cls')
import sqlite3
cnAlbum=sqlite3.connect('Album')
curAlbum=cnAlbum.cursor()
curAlbum.execute('UPDATE PERSONAS SET NOMBRE="César G. Gamboa P." WHERE NOMBRE="César Gamboa"')
cnAlbum.commit()
print('Registro actualizado satisfactoriamente...')
cnAlbum.close()
En el visor podemos comprobar que el cambio se ha realizado correctamente:
Eliminación de un registro
Siguiendo el ejemplo anterior, para eliminar un registro de la base de datos cuyo nombre sea 'César G. Gamboa P.' el código sería como sigue:
import os
import sqlite3
os.system('cls')
cnAlbum=sqlite3.connect('Album')
cnCursor=cnAlbum.cursor()
cnAlbum.execute("DELETE FROM PERSONAS WHERE NOMBRE='César G. Gamboa P.'")
cnAlbum.commit()
print('Registro eiminado satisfactoriamente...')
cnAlbum.close()
Podemos comprobar en el visor que el registro ya no existe:
Comentarios
Publicar un comentario