Hi Denes,

I got the same syntax error (SyntaxError: invalid table "account"
attribute: sequence_name ) when using a legacy database (by specifying
the primarykey in 'define_table'). I tracked it down to the init
method of KeyedTable in sql.py and made an adjustment that worked -
for me at least - see below.

Nico de Groot

class KeyedTable(Table):
...
    def __init__(
        self,
        db,
        tablename,
        *fields,
        **args
        ):
...
        self._trigger_name = args.get('trigger_name', None)
        self._sequence_name = args.get('sequence_name', None)

        for k,v in args.iteritems():
            #patch NCdG
            if k in ['trigger_name','sequence_name']:
                continue
            #/patch NCdG
            if k != 'primarykey':

...


On 9 mei, 18:57, DenesL <[email protected]> wrote:
> On May 9, 9:08 am, Iceberg <[email protected]> wrote:
>
> > Thanks for the info. Would you please comment on my following
> > understanding and further questions?
>
> > 1. Keyed tables are only designed for dealing with legacy tables. Is
> > that true? And how do we define multiple primary keys in a brand new
> > db? Consider the address book scenario in my previous post.
>
> Keyed tables support is primarily for legacy tables that do not have a
> field that can be used as id field. It can also be used in newly
> created tables since all operations work (except update_record). Note
> that references are specified as tablename.fieldname and can only
> reference other keyed tables.
>
> > 2. Keyed tables are yet to be supported in some other DB engines, but
> > NOT the handy SQLite. Is there any special reason for that? AFAIK
> > SQLite contains native support for multiple primary key.
>
> I might be wrong but I think SQLite does not have FK (field level
> foreign key) and TFK (table level foreign key) required for the keyed
> table support in web2py.
>
> > 3. Neither keyword KeyedTable nor primarykey can be found 
> > inhttp://www.web2py.com/bookrightnow. Why? Denes' good work deserves
> > being mentioned as a dedicated section.
>
> It was added after the book was made available and it would be my
> fault, I either had no time or forgot about it.
>
>
>
> > Thanks in advance.
>
> > Sincerely,
> > Iceberg- Tekst uit oorspronkelijk bericht niet weergeven -
>
> - Tekst uit oorspronkelijk bericht weergeven -

Reply via email to