[genropy] Re: import DB MySQL.

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy@xxxxxxxxxxxxx
  • Date: Wed, 5 Oct 2016 08:57:52 +0200


Il giorno 05 ott 2016, alle ore 07:12, Gollum1 <gollum1.smeagol1@xxxxxxxxx> 
ha scritto:

mentre sul terminale mi appare il seguente messaggio:

unrecognized column type: mediumint


ho provato a fare la stessa cosa su tutte le tabelle, ed ho segnato
per l'importazione solo quelle che non mi hanno dato questo errore...
ed in effetti con queste l'importazione è riuscita…


Purtroppo i tipi nei vari DB sono molto fantasiosi.

Se vai nell'adapter di mysql (gnr/gnrpy/sql/adapters/gnrmysql.py) troverai :

class SqlDbAdapter(SqlDbBaseAdapter):
    typesDict = {'varchar': 'A', 'char': 'C', 'text': 'T', 'tinytext': 'T', 
'mediumtext': 'T', 'longtext': 'T',
                 'enum': 'A',
                 'boolean': 'B', 'date': 'D', 'time': 'H', 'datetime': 'DH', 
'tinyint': 'I', 'timestamp': 'DH',
                 'integer': 'I', 'bigint': 'L', 'smallint': 'I', 'int': 'I', 
'double precision': 'R', 'real': 'R',
                 'bytea': 'O', 'decimal':'N', 'longblob':'O', 'float':'R', 
'blob':'O', 'varbinary':'O'}

    revTypesDict = {'A': 'varchar', 'T': 'text', 'C': 'char',
                    'X': 'text', 'P': 'text', 'Z': 'text',
                    'B': 'boolean', 'D': 'date', 'H': 'time', 'DH': 'datetime',
                    'I': 'int', 'L': 'bigint', 'R': 'real','N':'decimal',
                    'serial': 'serial8', 'O': 'bytea'}

In pratica questi dizionari governano come vengono mappati i tipi.

Noi non gestiamo i mediumint e quindi si pianta.

Se vuoi aggiustarlo tu basta che modifichi typesDict aggiungendo : 
'mediumint':'L'

    typesDict = {'varchar': 'A', 'char': 'C', 'text': 'T', 'tinytext': 'T', 
'mediumtext': 'T', 'longtext': 'T',
                 'enum': 'A',
                 'boolean': 'B', 'date': 'D', 'time': 'H', 'datetime': 'DH', 
'tinyint': 'I', 'timestamp': 'DH',
                 'integer': 'I', 'bigint': 'L', 'smallint': 
'I','mediumint':'L', 'int': 'I', 'double precision': 'R', 'real': 'R',
                 'bytea': 'O', 'decimal':'N', 'longblob':'O', 'float':'R', 
'blob':'O', 'varbinary':'O'}


Poi lo faremo noi ma se intanto vuoi provare…


G




Other related posts: