<jupyter_start><jupyter_text>ClusterAI 2020 Ciencia de Datos - Ingeniería Industrial - UTN BA clase_12 (parte 2): Conectando Python con SQL Elaborado por: <NAME>  IMPORT<jupyter_code>import sqlite3
import os
import pandas as pd
import csv<jupyter_output><empty_output><jupyter_text>Cambiamos el directorio al cual sea de nuestra conveniencia para que nuestra DB se guarde en esa carpeta<jupyter_code>cwd = os.getcwd()
cwd
os.chdir(r'C:\Users\avelazquez\Documents\ClusterAI\Clase Base de Datos')<jupyter_output><empty_output><jupyter_text>CARGA DE DATOS<jupyter_code>conn = sqlite3.connect('autosdb.sqlite')
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS alquila')
cur.execute('''
CREATE TABLE alquila (dni INTEGER, patente TEXT, fechar DATE, fechad DATE, ciudad TEXT)''')
cur.execute('DROP TABLE IF EXISTS auto')
cur.execute('''
CREATE TABLE auto (patente TEXT, marca TEXT, modelo DATE, color TEXT)''')
cur.execute('DROP TABLE IF EXISTS cliente')
# cliente.csv la vamos a subir directamente usando DB browser y SQL Lite
# 1. Vamos a open DB y buscamos el archivo autosdb.slite
# 2. Vamos a execute SQL y de la misma manera que las tablas anteriores hacemos primero un DROP y luego CREATE 
# de la tabla cliente<jupyter_output><empty_output><jupyter_text>Una vez creadas las tablas vamos a popularlas<jupyter_code>fname_alquila = r'C:\Users\avelazquez\Documents\ClusterAI\Clase Base de Datos\Data\alquila.csv'
fh_alquila = open(fname_alquila)
for idx,line in enumerate(fh_alquila): 
    if idx != 0:
        row = cur.fetchone()
        dni = line.split(';')[0]
        patente = line.split(';')[1]
        fechar = line.split(';')[2]
        fechad = line.split(';')[3]
        ciudad = line.split(';')[4]
        if row is None:
            cur.execute("INSERT INTO alquila VALUES (?, ?, ?, ?, ?)", (dni, patente, fechar, fechad, ciudad))
    else:
        continue
cur.execute("SELECT * FROM alquila")
print(cur.fetchall())
conn.commit()
fname_auto = r'C:\Users\avelazquez\Documents\ClusterAI\Clase Base de Datos\Data\auto.csv'
with open(fname_auto, newline='') as f:
    reader = csv.reader(f,delimiter = ';')
    next(reader)
    data = [tuple(row) for row in reader]

print(data)
cur.executemany('INSERT INTO auto (patente,marca,modelo,color) VALUES (?,?,?,?)', data)
sqlstr = "SELECT * FROM auto"
for row in cur.execute(sqlstr):
    print(str(row))
conn.commit()
#Ahora que ya sabemos como hacerlo cargamos el ultimo archivo
fname_cliente = r'C:\Users\avelazquez\Documents\ClusterAI\Clase Base de Datos\Data\cliente.csv'

with open(fname_cliente, newline='') as f_cliente:
    reader_cliente = csv.reader(f_cliente,delimiter = ';')
    next(reader_cliente)
    data_cliente = [tuple(row) for row in reader_cliente]
print(data_cliente)
    
cur.executemany('INSERT INTO cliente VALUES (?,?,?)', data_cliente)

sqlstr = "SELECT * FROM cliente"
for row in cur.execute(sqlstr):
    print(str(row))
conn.commit()<jupyter_output><empty_output><jupyter_text>EXTRACCION DE DATOS<jupyter_code>#Vamos a hacer un JOIN y traer solo la informacion que queremos
sqlstr2 = ''' 
          SELECT 
          a.dni as dni_cliente,
          a.patente,
          au.marca,
          au.modelo,
          au.color,
          a.fechar,
          a.fechad,
          a.ciudad as ciudad_alquiler,
          c.nombre as nombre_cliente,
          c.ciudad as ciudad_cliente
          FROM alquila a  
          LEFT JOIN cliente c on c.dni = a.dni 
          LEFT JOIN auto au on au.patente = a.patente 
          WHERE c.nombre LIKE "%santiago%" 
          '''  
df = pd.read_sql(sqlstr2, conn)
df.head()
cur.close()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11691884456671252, 'fraction_numerical': 0.005226960110041265, 'mean_word_length': 3.7842105263157895, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 22, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '453199', 'license': 'Apache-2.0', 'n_tokens_mistral': 1351, 'n_tokens_neox': 1299, 'n_words': 337, 'path': 'clases/clase_12/clusterai2020_clase12_SQL_and_Python.ipynb', 'repo_name': 'nmirson-ml/clusterai_2020', 'size': '3646'}