Scraping con Python la Liga BBVA de ESPN [Parte 4]


Bueno esta semana estuve un poco de aquí para alla, por lo que no había tenido tiempo de postear el Código para extraer los datos de ESPN de las tablas De posiciones así como las estadísticas de cada equipo, les cuento que se nos viene la NFL y la LVBP(Liga Venezolana de Béisbol Profesional), por lo que me voy a ver obligado a dar otro rumbo a las tablas de jugadores en ESPN y los voy a cambiar a NFL y LVBP, ojo si vamos a crear la tabla de jugadores para cada semana, pero no vamos a hacer mucho esfuerzo, por lo que les prometo una entrada mas de esta Serie donde tendremos los jugadores y sus estadísticas en las diferentes ligas de fútbol, y mas adelante seguiremos aprendiendo con python y ESPN pero en otros deportes…

También les quería comentar que como actualmente tengo bastante trabajo en ODOO v9 voy a tener redireccionar un poco y nos vamos a olvidar un rato de SQLITE3 y los siguientes scraping que voy a hacer van a ser para ODOO… sin mas nada que decir por ahora, manos a la obra….

Aquí tenemos el código que he venido preparando el cual voy a comentar brevemente dentro del mismo y luego voy a ir comentando las salidas, no voy ahondar mucho por que es muy largo mas de 200 lineas funcionales que bien se pueden rebajar a 110 mas o menos pero prefiero dejarlo así :D, este es el código:

### Autor Cesar Chirinos 
### Autor WordPress Orfeo
### Licencia GPL
### Publicado en stickybitshell.Wordpress

import sqlite3

import urllib2, re
from bs4 import BeautifulSoup
import re
from prettytable import PrettyTable

### Creamos la base de datos Ligas_varias_futbol

conn = sqlite3.connect('Final_Ligas_varias_futbol.sqlite3')

cur = conn.cursor()

### Agregue esto por que la pagina no me dice en que jornada o semana estamos
### Lo bueno de los otros deportes es que tienen mucha mas informacion de los jugadores
### y al hacerlo por partido vamos agregando los datos si existen a diferentes tablas 😀
liga_fecha_1 = int(input("Escriba El numero de la fecha a ingresar: "))

### Podemos comentar estas lineas cuando ya la tengamos en produccion
#cur.execute('''DROP TABLE IF EXISTS Ligas''')
#cur.execute('''DROP TABLE IF EXISTS Equipos_Ligas''')
#cur.execute('''DROP TABLE IF EXISTS Posiciones_por_Fechas''')

## Tabla para las ligas
cur.execute('''CREATE TABLE IF NOT EXISTS Ligas (id_liga INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, nombre_liga TEXT UNIQUE,  pais_liga TEXT UNIQUE)''')

### Tabla para todos los equipos involucrados
cur.execute('''CREATE TABLE IF NOT EXISTS Equipos_Ligas (id_equipo INTEGER PRIMARY KEY, nombre_equipo TEXT UNIQUE,  id_equipo_ESPN INTEGER UNIQUE, id_liga INTEGER)''')


### Creamos la tabla para guardar losd atos de cada jornada o semana 
cur.execute('''
 CREATE TABLE IF NOT EXISTS Posiciones_por_Fechas (id_posiciones INTEGER PRIMARY KEY, id_equipo INTEGER NOT NULL,id_liga INTEGER NOT NULL , posicion INTEGER NOT NULL,
                                                    part_jugado  INTEGER NOT NULL, p_gan INTEGER NOT NULL ,p_emp INTEGER NOT NULL, p_per INTEGER NOT NULL, 
                                                    gol_favor INTEGER NOT NULL, gol_contra INTEGER NOT NULL, Dif_Gol INTEGER NOT NULL,
                                                    p_gan_casa INTEGER NOT NULL, p_emp_casa INTEGER NOT NULL, p_per_casa INTEGER NOT NULL, gol_favor_casa INTEGER NOT NULL ,
                                                    gol_contra_casa INTEGER NOT NULL, p_gan_vis INTEGER NOT NULL, p_emp_vis INTEGER NOT NULL, p_per_vis INTEGER NOT NULL,
                                                    gol_contra_vis  INTEGER NOT NULL, gol_favor_vis INTEGER NOT NULL, Puntos_tot INTEGER NOT NULL ,
                                                    liga_fecha INTEGER NOT NULL UNIQUE)''')
### HAY q arreglar la tabla asi como se colocan los datos, se imprimen 😀

        ### podemos agragar otras ligas
urls_ligas = [ "spanish-primera-division/15/table" , "english-premier-league/23/table" ,  "italian-serie-a/12/table", "german-bundesliga/10/table" ]

tabla_formateada =[]
contador = 0
liga_para_id = 1

### creamos un bucle for para recorrer las ligas que queremos
for liga in urls_ligas:
  url =  "http://www.espnfc.us/" +  liga 
  
  ### Sacamos los nombres haciendo uso de expresiones regulares
  sacar_nombre =  re.findall('^(\S+?)/', liga)
  nombre_liga = sacar_nombre[0]
  ### Sacamos el pais haciendo uso de expresiones regulares
  sacar_pais =  re.findall('^(\S+?)-', liga)
  pais_liga = sacar_pais[0]
    
    
  ### Ahora agregamos los datos extraidos a la tabla Ligas
  cur.execute('''INSERT OR IGNORE INTO Ligas (nombre_liga, pais_liga) VALUES ( ?,? )''',(nombre_liga,pais_liga )) # Agregamos los datos a las ligas que queremos estudiar
    
    
  ### Antes habiamos hecho uso de expresiones regulares, ahora vamos a usar beautiful soup para dar un mejor formato que nos permita hacer scrap sobre la pagina
  page = urllib2.urlopen(url)
  
  
  ### Formateamos las pagina a lxml con beautifulsoup
  soup = BeautifulSoup(page, "lxml")

  ### Buscamosla primera table y las agregamos a table
  table = soup.find('table')
  
  ### buscamos todas las tr o table row, y las agregamso a row
  rows = table.find_all('tr')

  results = []
  

  Equipos = []
  ids_ESPN = []
  
  ### Creamos un bucle para buscar en cada row
  for row in rows:
        ### los 2 condiciones se van a ejecutar para buscar las headers y luego las rows
        table_headers = row.find_all('th')
        if table_headers:
            results.append([headers.get_text() for headers in table_headers])
           
        table_data = row.find_all('td')
        if table_data:
	    results.append([data.get_text() for data in table_data])
            a_ver = [data for data in table_data]
            


  ### Ahora eliminamos los 2 primeros elementos de la lista, en realidad eliminamos las  2  primeras listas que  hay en results con el este bucle y el if
  i = 0
  for datos  in results:
  
    if i >= 2:
        ### Ahora vamos a eliminar el ruido o las columnas que no nos dicen nada
        while ( u'\xa0'  or u'\n' or u'' )  in datos:
            if (u'')  in datos :
                datos.remove(u'')
            elif  u'\n'  in datos:
	       datos.remove(u'\n')
	    elif  u'\xa0'  in datos:
	       datos.remove(u'\xa0')
	       
        
        
        ### Agregamos la salida a una nueva lista
        tabla_formateada.append(datos)

    i += 1        

  
  
  ### Ahora llega la parte divertida
  ### Buscamos los nombres de los equipos y sus ids, esto para crear la relacion entre la tabla 2 y 3
  ### Asi como tambien para en un futuro cuando necesitemos buscar los jugadores de cada equipo usar el id para ingresar a ESPN
  ###Buscamos todas las td que contienen la class team
  elementos_equipos = soup.find_all("td", class_="team")

  ids_espn =  []
  for element in elementos_equipos:
    
    ### Ahi equipos mal formateados que nos daran error, normalmente son los mas nuevos, si necesitara explicar mas a fondo este codigo, haria uso de print para que vayamos 
    ### viendo las salidas de cada linea importante y asi ir moviendonos por python y html e ir tomando lo que necesitamos
    if "\n\t\t\t\t\t\t\t\t\t\t\t\t\tLeganes\n\t\t\t\t\t\t\t\t\t\t\t\t" in element:
        equipo = "Leganes"
        id_espn = "17534"
      
        Equipos.append(equipo)
        ids_espn.append(id_espn)
    elif "\n\t\t\t\t\t\t\t\t\t\t\t\t\tRB Leipzig\n\t\t\t\t\t\t\t\t\t\t\t\t" in element:
        equipo = "RB Leipzig "
        id_espn = "11420"
      
        Equipos.append(equipo)
        ids_espn.append(id_espn)
        
    ### Este else se ejecutara siempre que no sean ninguno de los 2 equipos raros de arriba es decir el 99% de las veces 😀
    else:
      
        ### Busca las href en las etiquetas a
        id_espn_sin_formato= element.a["href"]
        ### hacemos uso de RE para extraer el id de la url
        id_espn_sin = re.findall('http://www.espnfc.us/club/\S+?/([0-9]+?)/', id_espn_sin_formato)
        
        ### sacamos el id de la lista
        id_espn = id_espn_sin[0]
        
        ### Extraemos el nombre del equipo
        equipo = element.get_text()
        Equipos.append(equipo)
        
        ids_espn.append(id_espn)
        
  #print  Equipos
  
  #print ids_espn
  
  
  #print len(ids_espn)
  #print len(Equipos)
  
  ### Este bucle es innecesario pero decidi hacerlo asi
  count_eq = 0              
  for equipo in Equipos:
        nombre_equipo= equipo.strip()
        id_equipo_ESPN = ids_espn[count_eq]
        id_liga = liga_para_id
        cur = conn.cursor()
        cur.execute('''INSERT OR IGNORE INTO Equipos_Ligas (nombre_equipo, id_equipo_ESPN, id_liga) VALUES ( ?,?,? )''',(nombre_equipo,id_equipo_ESPN ,id_liga)) # Agregamos los datos a las ligas que queremos estudiar
        
        
        count_eq +=1

  liga_para_id += 1  
  contador += 1

### Imprimimos las ligas que tenemos

SQLSTR = "SELECT  *  FROM Ligas"


Equipos_Liga =  "SELECT  *  FROM Equipos_Ligas"
print
print
for word in cur.execute(SQLSTR):
    print str(word[0]),"La liga:", word[1] ,"Es de :",  word[2]
  
print
print
print

###Generamos los equipos de la liga con su id liga para saber a cual corresponden en un futuro

print "Equipos de la liga"
join_liga =  "SELECT * FROM Equipos_Ligas"


formato_equipos = []
for word in cur.execute(join_liga):
    print word
    formato_equipos.append(word)


count = 0
for word in formato_equipos:  ### AQui debo modificar el cur.execute por otra cosa ya que tengo cur.execute abajo y rompe el for
    id_equipo = word[0]
    nombre_equipo = word[1]
    id_equipo_ESPN =  word[2]
    id_liga = word[3]
    if nombre_equipo in tabla_formateada[count][1]:
        posicion = tabla_formateada[count][0]
        #print posicion
        ###Totales
        part_jugado = tabla_formateada[count][2]
        #print part_jugado
        p_gan = tabla_formateada[count][3]
        #print p_gan
        p_emp = tabla_formateada[count][4]
        #print p_emp
        p_per = tabla_formateada[count][5]
        #print p_per
        
        gol_favor = tabla_formateada[count][6]
        #print p_per
        gol_contra = tabla_formateada[count][7]
        #print gol_contra
        ###casa

        p_gan_casa = tabla_formateada[count][8]
        #print p_gan_casa
        
        p_emp_casa = tabla_formateada[count][9]
        #print p_emp_casa
        
        p_per_casa = tabla_formateada[count][10]
        #print p_per_casa
        
        gol_favor_casa = tabla_formateada[count][11]
        #print gol_favor_casa
        
        gol_contra_casa = tabla_formateada[count][12]
        #print gol_contra_casa
        
        ###visita

        
        p_gan_vis = tabla_formateada[count][13]
        #print p_gan_vis
        p_emp_vis = tabla_formateada[count][14]
        #print p_emp_vis
        p_per_vis = tabla_formateada[count][15]
        #print p_per_vis
        gol_favor_vis = tabla_formateada[count][16]
        #print gol_favor_vis
        gol_contra_vis = tabla_formateada[count][17]
        #print gol_contra_vis
        
        
        
        Dif_Gol = tabla_formateada[count][18]
        #print Dif_Gol
        
        Puntos_tot = tabla_formateada[count][19]
        #print Puntos_tot
        liga_fecha = str(liga_fecha_1) + str(id_equipo)
	#print liga_fecha
	#print id_equipo, id_liga, id_equipo_ESPN, nombre_equipo, posicion, Dif_Gol, Puntos_tot, liga_fecha
	
        
        cur.execute('''INSERT OR IGNORE INTO Posiciones_por_Fechas (id_equipo,id_liga, posicion, part_jugado, p_gan, p_emp, p_per, gol_favor, gol_contra,  p_gan_casa, p_emp_casa, p_per_casa, gol_favor_casa, gol_contra_casa,  p_gan_vis, p_emp_vis, p_per_vis, gol_favor_vis, gol_contra_vis, Dif_Gol, Puntos_tot, liga_fecha ) VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )''',(id_equipo,id_liga, posicion, part_jugado, p_gan, p_emp, p_per, gol_favor, gol_contra,  p_gan_casa, p_emp_casa, p_per_casa, gol_favor_casa, gol_contra_casa,  p_gan_vis, p_emp_vis, p_per_vis, gol_favor_vis, gol_contra_vis, Dif_Gol, Puntos_tot, liga_fecha )) # Agregamos los datos a las ligas que queremos estudiar
        
    count += 1

posiciones =  "SELECT * FROM Posiciones_por_Fechas"
print "Lo que nos interesa es esta salida"
for word in cur.execute(posiciones):
    print word

print "Salida combinada de 2 tablas"

formato_combinado = []

relacion_tablas = "select * from Equipos_Ligas A, Posiciones_por_Fechas B where A.id_equipo = B.id_equipo" 
for word in cur.execute(relacion_tablas):
    print word
    formato_combinado.append(word)
print "aqui la cosa se complica pero lo ue no podemos hacer con sql yo lo hago con python"
print "Salida combinada de 2 tablas con 1 sola liga :D"


formato_combinado_2 = []

relacion_tablas_con_liga = "select * from Equipos_Ligas AS C  JOIN Posiciones_por_Fechas  AS R ON C.id_equipo = R.id_equipo  AND R.id_liga = 2   " 
for word in cur.execute(relacion_tablas_con_liga):      

        print word


conn.commit()
cur.close()

Y esta es la Salida por partes:

Escriba El numero de la fecha a ingresar: 2


1 La liga: spanish-primera-division Es de : spanish
2 La liga: english-premier-league Es de : english
3 La liga: italian-serie-a Es de : italian
4 La liga: german-bundesliga Es de : german

La primera parte, debemos agregar manualmente la semana en la estamos, si lo hacemos mal y no tenemos guardada la base de datos, podemos tener una catástrofe, naaa solo con el mismo uso de sqlite y python podríamos arreglarlo al final 😀 quizá diga como en otra entrada algún día :D….

Ok agregamos la semana en este caso 2, pero luego también agregue 3 :S solo para hacer la prueba, debería colocar un guardián que si agrego 15 como semana y no se han jugado 15 juegos por equipo no me haga caso y me diga que deje de tomar(no tomo :D) o algo así, ok la primera data que recibimos es sobre la liga y el pais.

Equipos de la liga
(1, u'Las Palmas', 98, 1)
(2, u'Barcelona', 83, 1)
(3, u'Real Madrid', 86, 1)
(4, u'Sevilla FC', 243, 1)
(5, u'Sporting Gij\xf3n', 3788, 1)
(6, u'Deportivo La Coru\xf1a', 90, 1)
(7, u'Leganes', 17534, 1)
(8, u'Eibar', 3752, 1)
(9, u'Real Sociedad', 89, 1)
(10, u'M\xe1laga', 99, 1)
(11, u'Atletico Madrid', 1068, 1)
(12, u'Villarreal', 102, 1)
(13, u'Alav\xe9s', 96, 1)
(14, u'Espanyol', 88, 1)
(15, u'Osasuna', 97, 1)
(16, u'Granada', 3747, 1)
(17, u'Real Betis', 244, 1)
(18, u'Celta Vigo', 85, 1)
(19, u'Athletic Bilbao', 93, 1)
(20, u'Valencia', 94, 1)
(21, u'Manchester City', 382, 2)
(22, u'Chelsea', 363, 2)
(23, u'Manchester United', 360, 2)
(24, u'Everton', 368, 2)
(25, u'Hull City', 306, 2)
(26, u'Middlesbrough', 369, 2)
(27, u'Tottenham Hotspur', 367, 2)
(28, u'Arsenal', 359, 2)
(29, u'Leicester City', 375, 2)
(30, u'West Bromwich Albion', 383, 2)
(31, u'Liverpool', 364, 2)
(32, u'West Ham United', 371, 2)
(33, u'Burnley', 379, 2)
(34, u'Swansea City', 318, 2)
(35, u'Southampton', 376, 2)
(36, u'Sunderland', 366, 2)
(37, u'Crystal Palace', 384, 2)
(38, u'Watford', 395, 2)
(39, u'AFC Bournemouth', 349, 2)
(40, u'Stoke City', 336, 2)
(41, u'Genoa', 3263, 3)
(42, u'Juventus', 111, 3)
(43, u'Sampdoria', 2734, 3)
(44, u'AS Roma', 104, 3)
(45, u'US Pescara', 3290, 3)
(46, u'Napoli', 114, 3)
(47, u'Torino', 239, 3)
(48, u'Chievo Verona', 238, 3)
(49, u'Lazio', 112, 3)
(50, u'Fiorentina', 109, 3)
(51, u'AC Milan', 103, 3)
(52, u'Udinese', 118, 3)
(53, u'Sassuolo', 3997, 3)
(54, u'Bologna', 107, 3)
(55, u'Palermo', 2923, 3)
(56, u'Cagliari', 2925, 3)
(57, u'Internazionale', 110, 3)
(58, u'Atalanta', 105, 3)
(59, u'Crotone', 3173, 3)
(60, u'Empoli', 2574, 3)
(61, u'Bayern Munich', 132, 4)
(62, u'FC Cologne', 122, 4)
(63, u'VfL Wolfsburg', 138, 4)
(64, u'Borussia Dortmund', 124, 4)
(65, u'Hertha Berlin', 129, 4)
(66, u'Borussia Monchengladbach', 268, 4)
(67, u'Eintracht Frankfurt', 125, 4)
(68, u'TSG Hoffenheim', 7911, 4)
(69, u'RB Leipzig', 11420, 4)
(70, u'Hamburg SV', 127, 4)
(71, u'FC Ingolstadt 04', 6367, 4)
(72, u'SC Freiburg', 126, 4)
(73, u'Bayer Leverkusen', 131, 4)
(74, u'Mainz', 2950, 4)
(75, u'Schalke 04', 133, 4)
(76, u'SV Darmstadt 98', 3812, 4)
(77, u'FC Augsburg', 3841, 4)
(78, u'Werder Bremen', 137, 4)

Luego agregamos todos los equipo según las urls de cada liga, ojo al ejecutar el bucle generamos un contador en 1 que nos va agregando +1 y así generamos el id_liga para la tabla 1,2 y la tabla 3, podemos notar 78 equipos para las 4 ligas el ultimo numero es la id_liga a la que pertenece

Luego tenemos:

Lo que nos interesa es esta salida
(1, 1, 1, 1, 2, 2, 0, 0, 9, 3, 6, 1, 0, 0, 5, 1, 1, 0, 0, 2, 4, 6, 10003)
(2, 2, 1, 2, 2, 2, 0, 0, 7, 2, 5, 1, 0, 0, 6, 2, 1, 0, 0, 0, 1, 6, 20003)
(3, 3, 1, 3, 2, 2, 0, 0, 5, 1, 4, 1, 0, 0, 2, 1, 1, 0, 0, 0, 3, 6, 30003)
(4, 4, 1, 4, 2, 1, 1, 0, 6, 4, 2, 1, 0, 0, 6, 4, 0, 1, 0, 0, 0, 4, 40003)
(5, 5, 1, 5, 2, 1, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 0, 4, 50003)
(6, 6, 1, 6, 2, 1, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 0, 4, 60003)
(7, 7, 1, 7, 2, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 70003)
(8, 8, 1, 8, 2, 1, 0, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 1, 2, 1, 3, 80003)
(9, 9, 1, 9, 2, 1, 0, 1, 2, 3, -1, 0, 0, 1, 0, 3, 1, 0, 0, 0, 2, 3, 90003)
(10, 10, 1, 10, 2, 0, 2, 0, 3, 3, 0, 0, 1, 0, 1, 1, 0, 1, 0, 2, 2, 2, 100003)
(11, 11, 1, 11, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 2, 110003)
(12, 12, 1, 12, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 2, 120003)
(13, 13, 1, 13, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 2, 130003)
(14, 14, 1, 14, 2, 0, 1, 1, 6, 8, -2, 0, 1, 0, 2, 2, 0, 0, 1, 6, 4, 1, 140003)
(15, 15, 1, 15, 2, 0, 1, 1, 1, 3, -2, 0, 0, 1, 0, 2, 0, 1, 0, 1, 1, 1, 150003)
(16, 16, 1, 16, 2, 0, 1, 1, 2, 6, -4, 0, 1, 0, 1, 1, 0, 0, 1, 5, 1, 1, 160003)
(17, 17, 1, 17, 2, 0, 1, 1, 2, 6, -4, 0, 1, 0, 0, 0, 0, 0, 1, 6, 2, 1, 170003)
(18, 18, 1, 18, 2, 0, 0, 2, 1, 3, -2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 0, 180003)
(19, 19, 1, 19, 2, 0, 0, 2, 1, 3, -2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 0, 190003)
(20, 20, 1, 20, 2, 0, 0, 2, 2, 5, -3, 0, 0, 1, 2, 4, 0, 0, 1, 1, 0, 0, 200003)
(21, 21, 2, 1, 3, 3, 0, 0, 9, 3, 6, 2, 0, 0, 5, 2, 1, 0, 0, 1, 4, 9, 210003)
(22, 22, 2, 2, 3, 3, 0, 0, 7, 2, 5, 2, 0, 0, 5, 1, 1, 0, 0, 1, 2, 9, 220003)
(23, 23, 2, 3, 3, 3, 0, 0, 6, 1, 5, 1, 0, 0, 2, 0, 2, 0, 0, 1, 4, 9, 230003)
(24, 24, 2, 4, 3, 2, 1, 0, 4, 2, 2, 1, 1, 0, 2, 1, 1, 0, 0, 1, 2, 7, 240003)
(25, 25, 2, 5, 3, 2, 0, 1, 4, 2, 2, 1, 0, 1, 2, 2, 1, 0, 0, 0, 2, 6, 250003)
(26, 26, 2, 6, 3, 1, 2, 0, 3, 2, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 2, 5, 260003)
(27, 27, 2, 7, 3, 1, 2, 0, 3, 2, 1, 1, 1, 0, 2, 1, 0, 1, 0, 1, 1, 5, 270003)
(28, 28, 2, 8, 3, 1, 1, 1, 6, 5, 1, 0, 0, 1, 3, 4, 1, 1, 0, 1, 3, 4, 280003)
(29, 29, 2, 9, 3, 1, 1, 1, 3, 3, 0, 1, 1, 0, 2, 1, 0, 0, 1, 2, 1, 4, 290003)
(30, 30, 2, 10, 3, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 0, 0, 0, 1, 4, 300003)
(31, 31, 2, 11, 3, 1, 1, 1, 5, 6, -1, 0, 0, 0, 0, 0, 1, 1, 1, 6, 5, 4, 310003)
(32, 32, 2, 12, 3, 1, 0, 2, 3, 5, -2, 1, 0, 0, 1, 0, 0, 0, 2, 5, 2, 3, 320003)
(33, 33, 2, 13, 3, 1, 0, 2, 2, 4, -2, 1, 0, 1, 2, 1, 0, 0, 1, 3, 0, 3, 330003)
(34, 34, 2, 14, 3, 1, 0, 2, 2, 4, -2, 0, 0, 1, 0, 2, 1, 0, 1, 2, 2, 3, 340003)
(35, 35, 2, 15, 3, 0, 2, 1, 2, 4, -2, 0, 2, 0, 2, 2, 0, 0, 1, 2, 0, 2, 350003)
(36, 36, 2, 16, 3, 0, 1, 2, 3, 5, -2, 0, 0, 1, 1, 2, 0, 1, 1, 3, 2, 1, 360003)
(37, 37, 2, 17, 3, 0, 1, 2, 1, 3, -2, 0, 1, 1, 1, 2, 0, 0, 1, 1, 0, 1, 370003)
(38, 38, 2, 18, 3, 0, 1, 2, 3, 6, -3, 0, 0, 2, 2, 5, 0, 1, 0, 1, 1, 1, 380003)
(39, 39, 2, 19, 3, 0, 1, 2, 2, 5, -3, 0, 0, 1, 1, 3, 0, 1, 1, 2, 1, 1, 390003)
(40, 40, 2, 20, 3, 0, 1, 2, 2, 6, -4, 0, 0, 1, 1, 4, 0, 1, 1, 2, 1, 1, 400003)
(41, 41, 3, 1, 2, 2, 0, 0, 6, 2, 4, 1, 0, 0, 3, 1, 1, 0, 0, 1, 3, 6, 410003)
(42, 42, 3, 2, 2, 2, 0, 0, 3, 1, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 1, 6, 420003)
(43, 43, 3, 3, 2, 2, 0, 0, 3, 1, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 1, 6, 430003)
(44, 44, 3, 4, 2, 1, 1, 0, 6, 2, 4, 1, 0, 0, 4, 0, 0, 1, 0, 2, 2, 4, 440003)
(45, 45, 3, 5, 2, 1, 1, 0, 5, 2, 3, 0, 1, 0, 2, 2, 1, 0, 0, 0, 3, 4, 450003)
(46, 46, 3, 6, 2, 1, 1, 0, 6, 4, 2, 1, 0, 0, 4, 2, 0, 1, 0, 2, 2, 4, 460003)
(47, 47, 3, 7, 2, 1, 0, 1, 7, 4, 3, 1, 0, 0, 5, 1, 0, 0, 1, 3, 2, 3, 470003)
(48, 48, 3, 8, 2, 1, 0, 1, 2, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 1, 0, 3, 480003)
(49, 49, 3, 9, 2, 1, 0, 1, 4, 4, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 4, 3, 490003)
(50, 50, 3, 10, 2, 1, 0, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 1, 2, 1, 3, 500003)
(51, 51, 3, 11, 2, 1, 0, 1, 5, 6, -1, 1, 0, 0, 3, 2, 0, 0, 1, 4, 2, 3, 510003)
(52, 52, 3, 12, 2, 1, 0, 1, 2, 4, -2, 1, 0, 0, 2, 0, 0, 0, 1, 4, 0, 3, 520003)
(53, 53, 3, 13, 2, 1, 0, 1, 1, 3, -2, 0, 0, 1, 0, 3, 1, 0, 0, 0, 1, 3, 530003)
(54, 54, 3, 14, 2, 1, 0, 1, 2, 5, -3, 1, 0, 0, 1, 0, 0, 0, 1, 5, 1, 3, 540003)
(55, 55, 3, 15, 2, 0, 1, 1, 1, 2, -1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 550003)
(56, 56, 3, 16, 2, 0, 1, 1, 3, 5, -2, 0, 1, 0, 2, 2, 0, 0, 1, 3, 1, 1, 560003)
(57, 57, 3, 17, 2, 0, 1, 1, 1, 3, -2, 0, 1, 0, 1, 1, 0, 0, 1, 2, 0, 1, 570003)
(58, 58, 3, 18, 2, 0, 0, 2, 4, 6, -2, 0, 0, 1, 3, 4, 0, 0, 1, 2, 1, 0, 580003)
(59, 59, 3, 19, 2, 0, 0, 2, 1, 4, -3, 0, 0, 1, 1, 3, 0, 0, 1, 1, 0, 0, 590003)
(60, 60, 3, 20, 2, 0, 0, 2, 0, 3, -3, 0, 0, 1, 0, 1, 0, 0, 1, 2, 0, 0, 600003)
(61, 61, 4, 1, 1, 1, 0, 0, 6, 0, 6, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 3, 610003)
(62, 62, 4, 2, 1, 1, 0, 0, 2, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 620003)
(63, 63, 4, 2, 1, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 3, 630003)
(64, 64, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 640003)
(65, 65, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 650003)
(66, 66, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 660003)
(67, 67, 4, 7, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 670003)
(68, 68, 4, 8, 1, 0, 1, 0, 2, 2, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 1, 680003)
(69, 69, 4, 8, 1, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 1, 690003)
(70, 70, 4, 10, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 700003)
(71, 71, 4, 10, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 710003)
(72, 72, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 720003)
(73, 73, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 730003)
(74, 74, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 740003)
(75, 75, 4, 15, 1, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 750003)
(76, 76, 4, 16, 1, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 760003)
(77, 77, 4, 16, 1, 0, 0, 1, 0, 2, -2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 770003)
(78, 78, 4, 18, 1, 0, 0, 1, 0, 6, -6, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 780003)

Aquí necesitamos observar que tenemos los campos tal como los agregamos al crear la tabla:

cur.execute('''
 CREATE TABLE IF NOT EXISTS Posiciones_por_Fechas (id_posiciones INTEGER PRIMARY KEY, id_equipo INTEGER NOT NULL,id_liga INTEGER NOT NULL , posicion INTEGER NOT NULL,
 part_jugado INTEGER NOT NULL, p_gan INTEGER NOT NULL ,p_emp INTEGER NOT NULL, p_per INTEGER NOT NULL, 
 gol_favor INTEGER NOT NULL, gol_contra INTEGER NOT NULL, Dif_Gol INTEGER NOT NULL,
 p_gan_casa INTEGER NOT NULL, p_emp_casa INTEGER NOT NULL, p_per_casa INTEGER NOT NULL, gol_favor_casa INTEGER NOT NULL ,
 gol_contra_casa INTEGER NOT NULL, p_gan_vis INTEGER NOT NULL, p_emp_vis INTEGER NOT NULL, p_per_vis INTEGER NOT NULL,
 gol_contra_vis INTEGER NOT NULL, gol_favor_vis INTEGER NOT NULL, Puntos_tot INTEGER NOT NULL ,
 liga_fecha INTEGER NOT NULL UNIQUE)''')

Debemos fijarnos que liga_fecha tiene una restricción de ser UNIQUE o única, pero para poder hacer esto, he tenido que hacer esta linea= “liga_fecha = str(id_equipo)+ ‘000’ + str(liga_fecha_1)” ya que no me entendí nunca por que el sqlite no me permite colocar varias columnas como PRIMARY  KEY y tampoco me permitia colocarle UNIQUE a varias columnas juntas por lo que decidí hacerlo con python así como un correlativo….

Luego tenemos esta ultima salida:

Salida combinada de 2 tablas
(1, u'Las Palmas', 98, 1, 1, 1, 1, 1, 2, 2, 0, 0, 9, 3, 6, 1, 0, 0, 5, 1, 1, 0, 0, 2, 4, 6, 10002)
(2, u'Barcelona', 83, 1, 2, 2, 1, 2, 2, 2, 0, 0, 7, 2, 5, 1, 0, 0, 6, 2, 1, 0, 0, 0, 1, 6, 20002)
(3, u'Real Madrid', 86, 1, 3, 3, 1, 3, 2, 2, 0, 0, 5, 1, 4, 1, 0, 0, 2, 1, 1, 0, 0, 0, 3, 6, 30002)
(4, u'Sevilla FC', 243, 1, 4, 4, 1, 4, 2, 1, 1, 0, 6, 4, 2, 1, 0, 0, 6, 4, 0, 1, 0, 0, 0, 4, 40002)
(5, u'Sporting Gij\xf3n', 3788, 1, 5, 5, 1, 5, 2, 1, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 0, 4, 50002)
(6, u'Deportivo La Coru\xf1a', 90, 1, 6, 6, 1, 6, 2, 1, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 0, 4, 60002)
(7, u'Leganes', 17534, 1, 7, 7, 1, 7, 2, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 70002)
(8, u'Eibar', 3752, 1, 8, 8, 1, 8, 2, 1, 0, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 1, 2, 1, 3, 80002)
(9, u'Real Sociedad', 89, 1, 9, 9, 1, 9, 2, 1, 0, 1, 2, 3, -1, 0, 0, 1, 0, 3, 1, 0, 0, 0, 2, 3, 90002)
(10, u'M\xe1laga', 99, 1, 10, 10, 1, 10, 2, 0, 2, 0, 3, 3, 0, 0, 1, 0, 1, 1, 0, 1, 0, 2, 2, 2, 100002)
(11, u'Atletico Madrid', 1068, 1, 11, 11, 1, 11, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 2, 110002)
(12, u'Villarreal', 102, 1, 12, 12, 1, 12, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 2, 120002)
(13, u'Alav\xe9s', 96, 1, 13, 13, 1, 13, 2, 0, 2, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 2, 130002)
(14, u'Espanyol', 88, 1, 14, 14, 1, 14, 2, 0, 1, 1, 6, 8, -2, 0, 1, 0, 2, 2, 0, 0, 1, 6, 4, 1, 140002)
(15, u'Osasuna', 97, 1, 15, 15, 1, 15, 2, 0, 1, 1, 1, 3, -2, 0, 0, 1, 0, 2, 0, 1, 0, 1, 1, 1, 150002)
(16, u'Granada', 3747, 1, 16, 16, 1, 16, 2, 0, 1, 1, 2, 6, -4, 0, 1, 0, 1, 1, 0, 0, 1, 5, 1, 1, 160002)
(17, u'Real Betis', 244, 1, 17, 17, 1, 17, 2, 0, 1, 1, 2, 6, -4, 0, 1, 0, 0, 0, 0, 0, 1, 6, 2, 1, 170002)
(18, u'Celta Vigo', 85, 1, 18, 18, 1, 18, 2, 0, 0, 2, 1, 3, -2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 0, 180002)
(19, u'Athletic Bilbao', 93, 1, 19, 19, 1, 19, 2, 0, 0, 2, 1, 3, -2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 0, 190002)
(20, u'Valencia', 94, 1, 20, 20, 1, 20, 2, 0, 0, 2, 2, 5, -3, 0, 0, 1, 2, 4, 0, 0, 1, 1, 0, 0, 200002)
(21, u'Manchester City', 382, 2, 21, 21, 2, 1, 3, 3, 0, 0, 9, 3, 6, 2, 0, 0, 5, 2, 1, 0, 0, 1, 4, 9, 210002)
(22, u'Chelsea', 363, 2, 22, 22, 2, 2, 3, 3, 0, 0, 7, 2, 5, 2, 0, 0, 5, 1, 1, 0, 0, 1, 2, 9, 220002)
(23, u'Manchester United', 360, 2, 23, 23, 2, 3, 3, 3, 0, 0, 6, 1, 5, 1, 0, 0, 2, 0, 2, 0, 0, 1, 4, 9, 230002)
(24, u'Everton', 368, 2, 24, 24, 2, 4, 3, 2, 1, 0, 4, 2, 2, 1, 1, 0, 2, 1, 1, 0, 0, 1, 2, 7, 240002)
(25, u'Hull City', 306, 2, 25, 25, 2, 5, 3, 2, 0, 1, 4, 2, 2, 1, 0, 1, 2, 2, 1, 0, 0, 0, 2, 6, 250002)
(26, u'Middlesbrough', 369, 2, 26, 26, 2, 6, 3, 1, 2, 0, 3, 2, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 2, 5, 260002)
(27, u'Tottenham Hotspur', 367, 2, 27, 27, 2, 7, 3, 1, 2, 0, 3, 2, 1, 1, 1, 0, 2, 1, 0, 1, 0, 1, 1, 5, 270002)
(28, u'Arsenal', 359, 2, 28, 28, 2, 8, 3, 1, 1, 1, 6, 5, 1, 0, 0, 1, 3, 4, 1, 1, 0, 1, 3, 4, 280002)
(29, u'Leicester City', 375, 2, 29, 29, 2, 9, 3, 1, 1, 1, 3, 3, 0, 1, 1, 0, 2, 1, 0, 0, 1, 2, 1, 4, 290002)
(30, u'West Bromwich Albion', 383, 2, 30, 30, 2, 10, 3, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 0, 0, 0, 1, 4, 300002)
(31, u'Liverpool', 364, 2, 31, 31, 2, 11, 3, 1, 1, 1, 5, 6, -1, 0, 0, 0, 0, 0, 1, 1, 1, 6, 5, 4, 310002)
(32, u'West Ham United', 371, 2, 32, 32, 2, 12, 3, 1, 0, 2, 3, 5, -2, 1, 0, 0, 1, 0, 0, 0, 2, 5, 2, 3, 320002)
(33, u'Burnley', 379, 2, 33, 33, 2, 13, 3, 1, 0, 2, 2, 4, -2, 1, 0, 1, 2, 1, 0, 0, 1, 3, 0, 3, 330002)
(34, u'Swansea City', 318, 2, 34, 34, 2, 14, 3, 1, 0, 2, 2, 4, -2, 0, 0, 1, 0, 2, 1, 0, 1, 2, 2, 3, 340002)
(35, u'Southampton', 376, 2, 35, 35, 2, 15, 3, 0, 2, 1, 2, 4, -2, 0, 2, 0, 2, 2, 0, 0, 1, 2, 0, 2, 350002)
(36, u'Sunderland', 366, 2, 36, 36, 2, 16, 3, 0, 1, 2, 3, 5, -2, 0, 0, 1, 1, 2, 0, 1, 1, 3, 2, 1, 360002)
(37, u'Crystal Palace', 384, 2, 37, 37, 2, 17, 3, 0, 1, 2, 1, 3, -2, 0, 1, 1, 1, 2, 0, 0, 1, 1, 0, 1, 370002)
(38, u'Watford', 395, 2, 38, 38, 2, 18, 3, 0, 1, 2, 3, 6, -3, 0, 0, 2, 2, 5, 0, 1, 0, 1, 1, 1, 380002)
(39, u'AFC Bournemouth', 349, 2, 39, 39, 2, 19, 3, 0, 1, 2, 2, 5, -3, 0, 0, 1, 1, 3, 0, 1, 1, 2, 1, 1, 390002)
(40, u'Stoke City', 336, 2, 40, 40, 2, 20, 3, 0, 1, 2, 2, 6, -4, 0, 0, 1, 1, 4, 0, 1, 1, 2, 1, 1, 400002)
(41, u'Genoa', 3263, 3, 41, 41, 3, 1, 2, 2, 0, 0, 6, 2, 4, 1, 0, 0, 3, 1, 1, 0, 0, 1, 3, 6, 410002)
(42, u'Juventus', 111, 3, 42, 42, 3, 2, 2, 2, 0, 0, 3, 1, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 1, 6, 420002)
(43, u'Sampdoria', 2734, 3, 43, 43, 3, 3, 2, 2, 0, 0, 3, 1, 2, 1, 0, 0, 2, 1, 1, 0, 0, 0, 1, 6, 430002)
(44, u'AS Roma', 104, 3, 44, 44, 3, 4, 2, 1, 1, 0, 6, 2, 4, 1, 0, 0, 4, 0, 0, 1, 0, 2, 2, 4, 440002)
(45, u'US Pescara', 3290, 3, 45, 45, 3, 5, 2, 1, 1, 0, 5, 2, 3, 0, 1, 0, 2, 2, 1, 0, 0, 0, 3, 4, 450002)
(46, u'Napoli', 114, 3, 46, 46, 3, 6, 2, 1, 1, 0, 6, 4, 2, 1, 0, 0, 4, 2, 0, 1, 0, 2, 2, 4, 460002)
(47, u'Torino', 239, 3, 47, 47, 3, 7, 2, 1, 0, 1, 7, 4, 3, 1, 0, 0, 5, 1, 0, 0, 1, 3, 2, 3, 470002)
(48, u'Chievo Verona', 238, 3, 48, 48, 3, 8, 2, 1, 0, 1, 2, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 1, 0, 3, 480002)
(49, u'Lazio', 112, 3, 49, 49, 3, 9, 2, 1, 0, 1, 4, 4, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 4, 3, 490002)
(50, u'Fiorentina', 109, 3, 50, 50, 3, 10, 2, 1, 0, 1, 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 1, 2, 1, 3, 500002)
(51, u'AC Milan', 103, 3, 51, 51, 3, 11, 2, 1, 0, 1, 5, 6, -1, 1, 0, 0, 3, 2, 0, 0, 1, 4, 2, 3, 510002)
(52, u'Udinese', 118, 3, 52, 52, 3, 12, 2, 1, 0, 1, 2, 4, -2, 1, 0, 0, 2, 0, 0, 0, 1, 4, 0, 3, 520002)
(53, u'Sassuolo', 3997, 3, 53, 53, 3, 13, 2, 1, 0, 1, 1, 3, -2, 0, 0, 1, 0, 3, 1, 0, 0, 0, 1, 3, 530002)
(54, u'Bologna', 107, 3, 54, 54, 3, 14, 2, 1, 0, 1, 2, 5, -3, 1, 0, 0, 1, 0, 0, 0, 1, 5, 1, 3, 540002)
(55, u'Palermo', 2923, 3, 55, 55, 3, 15, 2, 0, 1, 1, 1, 2, -1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 550002)
(56, u'Cagliari', 2925, 3, 56, 56, 3, 16, 2, 0, 1, 1, 3, 5, -2, 0, 1, 0, 2, 2, 0, 0, 1, 3, 1, 1, 560002)
(57, u'Internazionale', 110, 3, 57, 57, 3, 17, 2, 0, 1, 1, 1, 3, -2, 0, 1, 0, 1, 1, 0, 0, 1, 2, 0, 1, 570002)
(58, u'Atalanta', 105, 3, 58, 58, 3, 18, 2, 0, 0, 2, 4, 6, -2, 0, 0, 1, 3, 4, 0, 0, 1, 2, 1, 0, 580002)
(59, u'Crotone', 3173, 3, 59, 59, 3, 19, 2, 0, 0, 2, 1, 4, -3, 0, 0, 1, 1, 3, 0, 0, 1, 1, 0, 0, 590002)
(60, u'Empoli', 2574, 3, 60, 60, 3, 20, 2, 0, 0, 2, 0, 3, -3, 0, 0, 1, 0, 1, 0, 0, 1, 2, 0, 0, 600002)
(61, u'Bayern Munich', 132, 4, 61, 61, 4, 1, 1, 1, 0, 0, 6, 0, 6, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 3, 610002)
(62, u'FC Cologne', 122, 4, 62, 62, 4, 2, 1, 1, 0, 0, 2, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 620002)
(63, u'VfL Wolfsburg', 138, 4, 63, 63, 4, 2, 1, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 3, 630002)
(64, u'Borussia Dortmund', 124, 4, 64, 64, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 640002)
(65, u'Hertha Berlin', 129, 4, 65, 65, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 650002)
(66, u'Borussia Monchengladbach', 268, 4, 66, 66, 4, 4, 1, 1, 0, 0, 2, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 3, 660002)
(67, u'Eintracht Frankfurt', 125, 4, 67, 67, 4, 7, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 670002)
(68, u'TSG Hoffenheim', 7911, 4, 68, 68, 4, 8, 1, 0, 1, 0, 2, 2, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 1, 680002)
(69, u'RB Leipzig', 11420, 4, 69, 69, 4, 8, 1, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 1, 690002)
(70, u'Hamburg SV', 127, 4, 70, 70, 4, 10, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 700002)
(71, u'FC Ingolstadt 04', 6367, 4, 71, 71, 4, 10, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 710002)
(72, u'SC Freiburg', 126, 4, 72, 72, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 720002)
(73, u'Bayer Leverkusen', 131, 4, 73, 73, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 730002)
(74, u'Mainz', 2950, 4, 74, 74, 4, 12, 1, 0, 0, 1, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 740002)
(75, u'Schalke 04', 133, 4, 75, 75, 4, 15, 1, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 750002)
(76, u'SV Darmstadt 98', 3812, 4, 76, 76, 4, 16, 1, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 760002)
(77, u'FC Augsburg', 3841, 4, 77, 77, 4, 16, 1, 0, 0, 1, 0, 2, -2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 770002)
(78, u'Werder Bremen', 137, 4, 78, 78, 4, 18, 1, 0, 0, 1, 0, 6, -6, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 780002)

Esta salida no es mas que la combinacion de 2 tablas que sabemos que tienen relación y es esta que le hemos dado ” relacion_tablas = “select * from Equipos_Ligas A, Posiciones_por_Fechas B where A.id_equipo = B.id_equipo” “, para poder ver lo que hemos visto arriba, luego si queremos ver 1 sola liga tenemos esta salida:

 

aqui la cosa se complica pero lo ue no podemos hacer con sql yo lo hago con python
Salida combinada de 2 tablas con 1 sola liga 😀
(21, u'Manchester City', 382, 2, 21, 21, 2, 1, 3, 3, 0, 0, 9, 3, 6, 2, 0, 0, 5, 2, 1, 0, 0, 1, 4, 9, 210002)
(22, u'Chelsea', 363, 2, 22, 22, 2, 2, 3, 3, 0, 0, 7, 2, 5, 2, 0, 0, 5, 1, 1, 0, 0, 1, 2, 9, 220002)
(23, u'Manchester United', 360, 2, 23, 23, 2, 3, 3, 3, 0, 0, 6, 1, 5, 1, 0, 0, 2, 0, 2, 0, 0, 1, 4, 9, 230002)
(24, u'Everton', 368, 2, 24, 24, 2, 4, 3, 2, 1, 0, 4, 2, 2, 1, 1, 0, 2, 1, 1, 0, 0, 1, 2, 7, 240002)
(25, u'Hull City', 306, 2, 25, 25, 2, 5, 3, 2, 0, 1, 4, 2, 2, 1, 0, 1, 2, 2, 1, 0, 0, 0, 2, 6, 250002)
(26, u'Middlesbrough', 369, 2, 26, 26, 2, 6, 3, 1, 2, 0, 3, 2, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 2, 5, 260002)
(27, u'Tottenham Hotspur', 367, 2, 27, 27, 2, 7, 3, 1, 2, 0, 3, 2, 1, 1, 1, 0, 2, 1, 0, 1, 0, 1, 1, 5, 270002)
(28, u'Arsenal', 359, 2, 28, 28, 2, 8, 3, 1, 1, 1, 6, 5, 1, 0, 0, 1, 3, 4, 1, 1, 0, 1, 3, 4, 280002)
(29, u'Leicester City', 375, 2, 29, 29, 2, 9, 3, 1, 1, 1, 3, 3, 0, 1, 1, 0, 2, 1, 0, 0, 1, 2, 1, 4, 290002)
(30, u'West Bromwich Albion', 383, 2, 30, 30, 2, 10, 3, 1, 1, 1, 2, 2, 0, 0, 1, 1, 1, 2, 1, 0, 0, 0, 1, 4, 300002)
(31, u'Liverpool', 364, 2, 31, 31, 2, 11, 3, 1, 1, 1, 5, 6, -1, 0, 0, 0, 0, 0, 1, 1, 1, 6, 5, 4, 310002)
(32, u'West Ham United', 371, 2, 32, 32, 2, 12, 3, 1, 0, 2, 3, 5, -2, 1, 0, 0, 1, 0, 0, 0, 2, 5, 2, 3, 320002)
(33, u'Burnley', 379, 2, 33, 33, 2, 13, 3, 1, 0, 2, 2, 4, -2, 1, 0, 1, 2, 1, 0, 0, 1, 3, 0, 3, 330002)
(34, u'Swansea City', 318, 2, 34, 34, 2, 14, 3, 1, 0, 2, 2, 4, -2, 0, 0, 1, 0, 2, 1, 0, 1, 2, 2, 3, 340002)
(35, u'Southampton', 376, 2, 35, 35, 2, 15, 3, 0, 2, 1, 2, 4, -2, 0, 2, 0, 2, 2, 0, 0, 1, 2, 0, 2, 350002)
(36, u'Sunderland', 366, 2, 36, 36, 2, 16, 3, 0, 1, 2, 3, 5, -2, 0, 0, 1, 1, 2, 0, 1, 1, 3, 2, 1, 360002)
(37, u'Crystal Palace', 384, 2, 37, 37, 2, 17, 3, 0, 1, 2, 1, 3, -2, 0, 1, 1, 1, 2, 0, 0, 1, 1, 0, 1, 370002)
(38, u'Watford', 395, 2, 38, 38, 2, 18, 3, 0, 1, 2, 3, 6, -3, 0, 0, 2, 2, 5, 0, 1, 0, 1, 1, 1, 380002)
(39, u'AFC Bournemouth', 349, 2, 39, 39, 2, 19, 3, 0, 1, 2, 2, 5, -3, 0, 0, 1, 1, 3, 0, 1, 1, 2, 1, 1, 390002)
(40, u'Stoke City', 336, 2, 40, 40, 2, 20, 3, 0, 1, 2, 2, 6, -4, 0, 0, 1, 1, 4, 0, 1, 1, 2, 1, 1, 400002)

Esta salida es un poco mas complicada y se logra con el siguiente comando “relacion_tablas_con_liga = “select * from Equipos_Ligas AS C  JOIN Posiciones_por_Fechas  AS R ON C.id_equipo = R.id_equipo  AND R.id_liga = 2   ”  “ es necesario acotar que si quitamos la clausula WHERE obtenemos la salida anterior 😀

Hasta aquí esta entrada espero que se hayan divertido, ya que seguiré trabajando en una ultima entrada para entrar con ODOO y scraping mas otras cosas si Dios lo permite, por lo pronto que Dios siga bendiciendo sus vidas y nos de fuerzas par resistir al mal así el huirá de nosotros…

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s