On Sep 8, 1:30 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> > So maybe tonight do you want me to go through the manual and find all
> > the missing datatypes and try to add them to the map?
>
> I would not stop you. ;-)
>

Here is a replacement data_type_map, it was shuffled a bit to put like
types together for easier maintenance. I didn't know what to do with
the YEAR type so it is commented out. I am not sure the decimal type
should be mapped to integer since the DAL accepts decimal(n,M) as a
field type.

data_type_map = dict(
        varchar = 'string',
        int = 'integer',
        integer = 'integer',
        tinyint = 'integer',
        smallint = 'integer',
        mediumint = 'integer',
        bigint = 'integer',
        float = 'double',
        double = 'double',
        char = 'string',
        decimal = 'integer',
        date = 'date',
        #year = 'date',
        time = 'time',
        timestamp = 'datetime',
        datetime = 'datetime',
        binary = 'blob',
        blob = 'blob',
        tinyblob = 'blob',
        mediumblob = 'blob',
        longblob = 'blob',
        text = 'text',
        tinytext = 'text',
        mediumtext = 'text',
        longtext = 'text',
        )

I also fixed the remaining problem in the line match re.search so line
75 or line 87 after above dict is changed

75c87
<                 hit = re.search('(\S+)\s+(\S+)( .*)?', line)
---
>                 hit = re.search('(\S+)\s+(\S+)(,| )( .*)?', line)

this fixes the matching on lines like

`description` longtext,

The comma immediately after the type got included as part of the type
string match in error.

Here is the output for the auth_event table

legacy_db.define_table('auth_event',
    Field('id','integer'),
    Field('time_stamp','datetime'),
    Field('client_ip','string'),
    Field('user_id','integer'),
    Field('origin','string'),
    Field('description','text'),
    migrate=False)

The id field should not be printed since it will be added
automatically.

The varchar fields have a length in () e.g. varchar(64) which could be
used to add on a length=N value for the Field constructor. The same
holds true for int fields but I don't think there is a real use for
that.

There is no recognition of foreign keys, fixing this would probably be
a significant effort. Some human intervention required as it
stands. ;-)

It certainly is a great start to getting a model file for an existing
MySQL database.

Ron

Reply via email to