PYTHON:

archivos y sqlite3

John Cardozo

John Cardozo

PYTHON:

archivos y sqlite3

Agenda

  • Archivos
    • Texto plano
    • JSON
  • Bases de datos
    • Creación
    • Lectura
    • Escritura

Abrir archivos

archivo = open(nombre_archivo, modo)

Modos de apertura

  • w = solo escritura
    Si el archivo ya existe lo elimina y lo crea de nuevo
  • r = solo lectura
    Si el archivo no existe genera un error
  • a = append
    Agrega datos al final del archivo
  • r+ = Lectura y escritura

Abrir un archivo

archivo.close()

Cerrar un archivo

IMPORTANTE

escribir a un archivo PLANO

# Abre el archivo en modo escritura
f = open('bandas.txt', 'w')

# Escribe en el archivo
f.write('Guns and Roses\n')
f.write('Aerosmith\n')
f.write('Metallica\n')
f.write('Tesla\n')

# Cierra el archivo
f.close()

leer de un archivo PLANO

# Abre el archivo en modo lectura
f = open('bandas.txt', 'r')
# Lee todo el contenido del archivo
s = f.read()
# Cierra el archivo
f.close()
# Imprime el archivo
print(s)

Leer todo el archivo

# Abre el archivo en modo lectura
f = open('bandas.txt', 'r')
# Lee una línea del archivo
s = f.readline()
# Cierra el archivo
f.close()
# Imprime el archivo
print(s)

Leer una línea del archivo

# Abre el archivo en modo lectura
f = open('bandas.txt', 'r')

# Recorre linea por linea el archivo
for linea in f:
    print(linea, end='')

# Se puede usar f.readlines() o 
# list(f)

Leer línea por línea

diccionarios (I)

# Definición simple
persona = {}

# Definición con datos
curso = {
    "materia": "Programacion",
    "semestre": 20201,
    "abierto": True,
    "horarios": ["lunes", "martes", "jueves"],
    "estudiantes": [
        {"id": 1, "nombre": "hugo"},
        {"id": 2, "nombre": "paco"},
        {"id": 3, "nombre": "luis"},
    ] 
}

Definición de diccionarios

diccionarios (II)

# Si la llave ya existe
# sobreescribe su valor
persona["nombre"] = "Guido"
persona["apellido"] = "Van Rosum"

Agregar/modificar llave

# Si la llave no existe
# genera un error
nombre = persona["nombre"]

Obtener el valor de una llave

# Si la llave no existe
# genera un error
del persona["nombre"]

Eliminar una llave

if "nombre" in persona:
  print("La llave existe!")

Verificar si una llave existe

escribir EN un archivo json

# Importa la libreria
import json

# Declara el objeto diccionario
datos = {"name": "Guido",
         "languages": ["English", "Spanish"],
         "married": False,
         "age": 46
         }

# Abre el archivo en modo escritura
archivo = open('person.json', 'w')

# Escribe el diccionario en el archivo
json.dump(datos, archivo)

# Cierra el archivo
archivo.close()

leer de un archivo json

# Importa la libreria
import json

# abre el archivo
archivo = open('person.json', 'r')

# lee archivo y obtiene el dicccionario
datos = json.load(archivo)

# Imprime los datos
print(datos)

# Cierra el archivo
archivo.close()

BASES DE DATOS - sqlite3

Base de datos

+

comandos de sqlite3

# Ejecucion
sqlite3 ruta_archivo_bases_de_datos

# Mostrar las tablas de la base de datos
.tables

# Salir de la consola de sqlite3
.quit

# Para sentencias SELECT mostrar los encabezados de los campos
.header ON

# Para alinear los datos por columnas
.mode column

# Activar llaves foráneas
PRAGMA Foreign_keys = ON;

Comandos de consola

BASES DE DATOS - tablas

id nombre edad
1 Cata 15
2 Camila 9
  • Campos
    • nombre
    • tipo
CREATE TABLE nombre_tabla
             (campo_1 tipo_campo, ... , campo_n tipo_campo)

Código SQL

sql

CREATE TABLE nombre_tabla (
	campo_1 tipo_campo, 
    ... , 
    campo_n tipo_campo
);

DROP TABLE nombre_tabla;

Data Definition Language

INSERT INTO nombre_tabla VALUES (valor1, 'valor2');

UPDATE nombre_tabla SET campo1 = valor WHERE condicion;

DELETE FROM nombre_table WHERE condicion;

Data Manipulation Language

SELECT campo1, campo2 FROM nombre_tabla;

Data Query Language

BASES DE DATOS - creación

import sqlite3

# Conecta a la base de datos.
# Si no existe crea la base de datos
conexion = sqlite3.connect('datos.db')

# Objeto que hace operaciones en la base de datos
cursor = conexion.cursor()

# Crear tabla
# Tipos: integer, text, real, 
# fechas (text con formato 'YYYY-MM-DD HH:MM:SS.SSS')
cadena_sql = '''create table usuarios (
                   id integer, nombre text
                );'''
cursor.execute(cadena_sql)

# Cierra la conexion
conexion.close()

Creación de base de datos

BASES DE DATOS - inserción

import sqlite3

# Conecta a la base de datos. Si no existe crea la base de datos
conexion = sqlite3.connect('datos.db')

# Objeto que ejecuta comandos en la base de datos
cursor = conexion.cursor()

# Crea usuarios
cursor.execute("INSERT INTO usuarios VALUES (1, 'Tesla')")
cursor.execute("INSERT INTO usuarios VALUES (2, 'Einstein')")

# Se debe ejecutar el commit 
# para hacer cambios en la base de datos
conexion.commit()

# Cerrar conexión
conexion.close()

Insertar registros

BASES DE DATOS - obtención

import sqlite3

# Conecta a la base de datos. Si no existe crea la base de datos
conexion = sqlite3.connect('datos.db')

# Objeto que ejecuta comandos en la base de datos
cursor = conexion.cursor()

# Crea parametros para la sentencia SQL
param = ('Tesla',)

# Ejecuta la sentencia
registros = cursor.execute('SELECT * FROM usuarios WHERE nombre=?', param)

# Recorre los registros obtenidos
for fila in registros:
    print('Id: {0} - Nombre: {1}'.format(fila[0], fila[1]))

# Cierra la conexión
conexion.close()

Obtener registros

bases de datos - actualización

import sqlite3

# Conecta a la base de datos. Si no existe crea la base de datos
conexion = sqlite3.connect('datos.db')

# Objeto que ejecuta comandos en la base de datos
cursor = conexion.cursor()

# Do this instead
parametros = ('Newton', 1, )
cursor.execute('UPDATE usuarios SET nombre=? WHERE id=?', parametros)

# Ejecuta commit para hacer cambios de información en la base de datos
conexion.commit()

# Cierra la conexión
conexion.close()

Actualizar registros

john cardozo

johncardozo@gmail.com

Python: Archivos y SQLite3

By John Cardozo

Python: Archivos y SQLite3

Archivos planos y JSON, SQLite3

  • 1,058