Código de Python - Exportar los archivos de GeoLite países y ciudades a MySQL

Imágen de perfil
Val: 666
Bronce
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Exportar los archivos de GeoLite países y ciudades a MySQLgráfica de visualizaciones


Python

Publicado el 11 de Julio del 2013 por Xavi (548 códigos)
10.114 visualizaciones desde el 11 de Julio del 2013
Código que exporta el contenido de los archivos GeoIPCountryWhois.csv y GeoLiteCity-Location.csv a MySQL para disponer de todos los países vinculados a sus ciudades.

Puedes descargar estos archivos de:
http://dev.maxmind.com/geoip/legacy/geolite/

- GeoLite Country CSV/Zip
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip

- GeoLite City CSV/Zip
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip

Versión 1

Publicado el 11 de Julio del 2013gráfica de visualizaciones de la versión: Versión 1
10.115 visualizaciones desde el 11 de Julio del 2013
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
"""
Este script, exporta la base de datos de GeoLite de paises y ciudades
a base de datos mysql

Descargar la base de datos de:
http://dev.maxmind.com/geoip/legacy/geolite/
    - GeoLite Country CSV/Zip
        http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
    - GeoLite City CSV/Zip
        http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip

Tienen que existis la base de datos `world` con las tablas:
CREATE TABLE IF NOT EXISTS `Paises` (
  `Codigo` varchar(2) NOT NULL,
  `Pais` varchar(100) NOT NULL,
  PRIMARY KEY (`Codigo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Ciudades` (
  `idCiudades` int not null auto_increment,
  `Paises_Codigo` varchar(2) NOT NULL,
  `Ciudad` varchar(100) NOT NULL,
  PRIMARY KEY (`idCiudades`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE `Ciudades` ADD index `Paises_Codigo`(`Paises_Codigo`);
ALTER TABLE `Ciudades` ADD index `Ciudad`(`Ciudad`);
"""
 
import sys
import _mysql
import MySQLdb
 
# informacion de la base de datos
host="localhost"
user="all"
pw="all"
port=3306
database="world"
 
 
# conectamos con la base de datos
try:
    db=_mysql.connect(host=host,user=user,passwd=pw,port=port,db=database)
except (_mysql.DatabaseError,_mysql.DataError,_mysql.Error,_mysql.IntegrityError,_mysql.InterfaceError,_mysql.InternalError,_mysql.MySQLError,_mysql.NotSupportedError,_mysql.OperationalError),e:
    print "Error: %s - %s" % (e[0],e[1])
    sys.exit()
except:
    print "Error desconocido"
    sys.exit()
 
 
# exportamos los paises
f=file("GeoIPCountryWhois.csv", "r")
db.query("DELETE FROM Paises")
db.query("ALTER TABLE Paises AUTO_INCREMENT = 0")
count=0
# hacemos un bucle hasta final de archivo
for line in f.read().splitlines():
    values=line.split(",")
    # unicamente guardaremos el codigo del pais y su nombre
    sql='INSERT INTO Paises VALUES ("%s", "%s")' % (values[4][1:-1], values[5][1:-1])
    try:
        db.query(sql)
        count+=1
    except:
        # cada vez que haya un registro repetido dara un error, ya
        # que el campo Codigo es una clave primaria
        pass
f.close()
print "se han añadido %s paises" % count
 
 
# exportamos las ciudades
f=file("GeoLiteCity-Location.csv", "r")
db.query("DELETE FROM Ciudades")
db.query("ALTER TABLE Ciudades AUTO_INCREMENT = 0")
count=0
lines=0
# hacemos un bucle hasta final de archivo
for line in f.read().splitlines():
    values=line.split(",")
    lines+=1
    # empezamos a partir de la tercera linea,. ya que las dos primeras
    # lineas contienen comentarios
    if lines>2 and values[3][1:-1]:
        # revisamos que no exista ya en la base de datos
        sql='SELECT idCiudades FROM Ciudades WHERE Paises_Codigo="%s" AND Ciudad="%s"' % (values[1][1:-1], values[3][1:-1])
        db.query(sql)
        if not db.store_result().fetch_row():
            count+=1
            sql='INSERT INTO Ciudades (Paises_Codigo,Ciudad) VALUES ("%s", "%s")' % (values[1][1:-1], values[3][1:-1])
            db.query(sql)
f.close()
 
print "se han añadido %s ciudades" % count



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s2426