I see a problem here:

    Field('id','integer'),

should be

    Field('id','id'),

On Sep 9, 12:01 am, ron_m <[email protected]> wrote:
> On Sep 8, 1:30 pm, mdipierro <[email protected]> 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