# Ejemplo de base de datos: Sqlite

## Pasos a seguir

## Paso 1. Importar el módulo sqlite3

### Sintaxis

`import sqlite3`

## Paso 2: Establecer la conexión con la base de datos.

### Sintaxis

`conectar = sqlite3.connect('`Nombre\_delabase\_de\_datostos.db\\').

### Importante:

Se debe utilizar un `try/except` al momento de crear la base de datos, se genera un error.

## Paso 3. Crear tabla de la base de datos

Una vez creada la base de datos, se debe crear un `cursor`, por el cual podremos ejecutar comandos SQL vía el método `execute()`.

En este caso se va a crear una tabla, que contiene el DNI del alumno, nombre, las calificaciones del primer y segundo parcial. La llave primaria (PRIMARY KEY), no debe estar repetida).

Guardar los cambios con el método `commit()`, sino se pierden los datos.

### Sintaxis

cursorObj = `conectar.cursor()`

cursorObj.`execute(\"CREATE TABLE` contactos(dni VARCHAR(9) `PRIMARY KEY`, nombre `text`, Primer\_parcial `float`, Segundo\_parcial `float`)\\")

`conectar.commit()`

Se crea la tabla `contactos` que va a tener un llave primaria que no se va a repetir, que va a tener 9 caracteres, nombre, tipo texto y calificiaciones decimales.

El método `commit ()` guarda todos los cambios que se hacen.

#### Importante

Se debe utilizar un `try/except` al momento de crear la tabla, ya que si la tabla existe, se genera un error.

## Operaciones a realizar

### Introducir datos en una tabla

Se debe crear un `cursor`, método `execute(INSERT INTO..`.)

#### Sintaxis

cursorObj = `conectar.cursor()`

cursorObj.`execute`(\\'`INSERT INTO` alumnos(dni, nombre, Primer\_parcial, Segundo\_parcial) VALUES(?, ?, ?, ?)\\', registro)

El caracter `\'?`\\' indica las posiciones donde se van a sustituir. El segundo parámetro registro es una lista con los datos que se utilizarán en la sustitución.

### Consultas datos de una tabla

Se debe crear un `cursor`, método execute(`SELECT \* FROM` alumnos ...)

#### Sintaxis

cursorObj = `conectar.cursor()`

cursorObj.`execute(\"SELECT \* FROM` alumnos `WHERE` Primer\_parcial>=?\\",(Primer\_parcial,))

registros=`cursorObj.fetchall()`

Donde:

`alumnos`=nombre de la tabla.

Primer\_parcial, es un campo de la tabla, y va a localizar las notas que sean mayor o igual, al valor que se le manda en este caso 5.6

`fetchal()`, devuelve los elementos de la tabla que coincidan con la condición.

### Borra una tabla

Elimina la tabla creada, Se debe crear un `cursor,` método e`xecute (DROP TABLE IF.`..), y guardar los cambios con el método commit(),

#### Sintaxis

cursorObj = `conectar.cursor()`

cursorObj`.execute(\'DROP TABLE IF EXISTS \'` + tabla)

`conectar.commit()`

## Paso 3. Cerrar la base de datos

Es conveniente cerrar la tabla de la base de datos, con el `cursor close()`

#### sintaxis

`conectar.close()`

## Enunciado

Introducir el DNI de los alumnos, con las notas del primer y segundo parcial de los alumnos de la asignatura Informática para ingeniería. Con unos datos previamente introducidos por el usuario.

### Código

```
import sqlite3
from sqlite3 import Error
#Crear la base de datos
def Conectar_BD():
    conectar=None
    try:        
        conectar = sqlite3.connect('Ejemplo_basedatos.db') 
        print("Se creado con éxito la conexión")
        return conectar
    except Error: 
        print(Error) 
#Cerrar la base de datos
def Cerrar_BD(conectar):
    conectar.close()
#Crear la tabla de los alumnos
def Crear_Tabla(conectar): 
    cursorObj = conectar.cursor() 
    cursorObj.execute("CREATE TABLE alumnos(dni VARCHAR(9) PRIMARY KEY, nombre text, Primer_parcial float, Segundo_parcial float)") 
    conectar.commit() 
#Insertar la tabla de los alumnos
def Insertar_Registros(conectar,listaRegistros):
    cursorObj = conectar.cursor()
    for registro in listaRegistros:
        cursorObj.execute('INSERT INTO alumnos(dni, nombre, Primer_parcial, Segundo_parcial) VALUES(?, ?, ?, ?)', registro)    
    conectar.commit()
#Consultar a ñps alumnos
def Consultar_tabla(conectar, Primer_parcial):
    cursorObj = conectar.cursor() 
    cursorObj.execute("SELECT * FROM alumnos WHERE Primer_parcial>=?",(Primer_parcial,))
    registros=cursorObj.fetchall()
    return registros
#Eliminar la tabla si existe
def Borrar_Tabla(conectar,tabla):
    cursorObj = conectar.cursor()
    cursorObj.execute('DROP TABLE IF EXISTS ' + tabla)
    conectar.commit()
#Imprimir los alumnos que coincdnian  con la calificación que se les envía
def Imprimir(registro):
    if registro:
        for i in registro:
            print(i)
    else:
        print("Ninguno cumple")
#Lleva a cabo las principales operaciones de una base de datos
def Inicio():
    conec=Conectar_BD()
    if conec!=None:
        Borrar_Tabla(conec,"alumnos")
        Crear_Tabla(conec)
        listaRegistros=[["11111111A","juan",7.9,8.9],
                        ["22222222B","ana",5.7,8.9],
                        ["33333333L","alma",6.9,7.8]]
        Insertar_Registros(conec,listaRegistros)
        registro=Consultar_tabla(conec,5.9)
        Imprimir(registro)
        Cerrar_BD(conec)
    print("FIN") 

Inicio()
```

## Prueba el código

{% embed url="<https://colab.research.google.com/drive/19CxwFu_rks6CG2_kC_7kIF6MM5UgkybD>" %}
