I am using lazy_tables=True at DAL definition, actually I don't know how to 
enable lazy_table for auth. Does it exist?
As I can see, auth.define_tables doesn't take any lazy_table parameter, 
moreover in my code I have a few lines of auth.settings.* which needs auth. 
To customize my own tables without forcing their creation I am using the 
on_define function, as shown in the example below:

db.define_table('answers',
    Field('question_id', db.questions),
    Field('route_id', db.route),
    Field('description', 'text' ),

       auth.signature,
    on_define = lambda table: [
        table.route_id.set_attributes(readable = False, writable = False),
    ]
)


Paolo

On Tuesday, January 15, 2013 3:10:32 PM UTC+1, Anthony wrote:
>
> Good point. Even better, use lazy_tables. You should also compile the app.
>
> On Tuesday, January 15, 2013 8:11:48 AM UTC-5, Paolo valleri wrote:
>>
>> Thanks for clarifying it. 
>> So that, to speed up web2py, we must use migrate_enabled=False instead of 
>> migrate=False at DAL definition. Otherwise for all the auth_* tables, 
>> web2py will access the disk to verify if the relative file in 
>> databases/hash_tablename.table exists and is updated, right?
>> If what I have said is correct I would suggest to update the book, 
>> http://web2py.com/books/default/chapter/29/13#Efficiency-tricks
>> changing migrate=False with migrate_enabled=False
>>
>> Paolo
>>
>>
>> 2013/1/15 Anthony <[email protected]>
>>
>>> DAL(..., migrate=False) does not completely turn off migrations but 
>>> merely sets the default migrate value for each table to False if it is not 
>>> set explicitly. The auth.define_tables() method, however, explicitly sets 
>>> migrate to True for each Auth table unless otherwise specified, so you 
>>> would have to do auth.define_tables(..., migrate=False). Another option is 
>>> to completely disable all migrations, regardless of individual table 
>>> settings, via:
>>>
>>> DAL(..., migrate_enabled=False)
>>>
>>> Anthony
>>>
>>>
>>> On Tuesday, January 15, 2013 7:35:14 AM UTC-5, Paolo valleri wrote:
>>>>
>>>> is on the db definition. 
>>>> db = DAL('postgres://web2py:web2py@**localhost:5432/traffic', 
>>>>  migrate=False,
>>>> lazy_tables=True,
>>>> )
>>>>
>>>> Paolo
>>>>
>>>> On Tuesday, January 15, 2013 11:38:49 AM UTC+1, Niphlod wrote:
>>>>>
>>>>> migrate=False is on the db or on Auth define_table() call ?
>>>>>
>>>>>
>>>>>
>>>>> Il giorno martedì 15 gennaio 2013 11:07:49 UTC+1, Paolo valleri ha 
>>>>> scritto:
>>>>>>
>>>>>> Hi all, I tried something odd.
>>>>>> I pulled a fresh copy of my code from git and I connected the app to 
>>>>>> an already 'working' database. 'working' in the meaning that both tables 
>>>>>> and data are already in the database. In web2py this approach 
>>>>>> fails, because at the first run it tries to create all the tables, and 
>>>>>> the 
>>>>>> db raises an exception like 'table already exist'.
>>>>>> In order to fix that I thought that migrate=False would help, however 
>>>>>> it fails again. due to Auth that tries to create the tables. Ticket:
>>>>>>
>>>>>> Traceback (most recent call last):
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/restricted.py", line 212, in 
>>>>>> restricted
>>>>>>
>>>>>>
>>>>>>     exec ccode in environment
>>>>>>
>>>>>>
>>>>>>   File 
>>>>>> "/home/pvalleri/src/web2py/**applications/vtraffic/**controllers/default.py"
>>>>>>  
>>>>>> <http://127.0.0.1:8000/admin/default/edit/vtraffic/controllers/default.py>,
>>>>>>  line 6, in <module>
>>>>>>
>>>>>>
>>>>>>     start = db.record.with_alias('start_**point')
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7221, in 
>>>>>> __getattr__
>>>>>>
>>>>>>
>>>>>>     return self.lazy_define_table(tablena**me,*fields,**args)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7174, in 
>>>>>> lazy_define_table
>>>>>>
>>>>>>
>>>>>>     table = table_class(self, tablename, *fields, **args)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7594, in __init__
>>>>>>
>>>>>>
>>>>>>     field.requires = sqlhtml_validators(field)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 6338, in 
>>>>>> sqlhtml_validators
>>>>>>
>>>>>>
>>>>>>     referenced = db[field_type[10:]]
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7215, in 
>>>>>> __getitem__
>>>>>>
>>>>>>
>>>>>>     return self.__getattr__(str(key))
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7221, in 
>>>>>> __getattr__
>>>>>>
>>>>>>
>>>>>>     return self.lazy_define_table(tablena**me,*fields,**args)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7177, in 
>>>>>> lazy_define_table
>>>>>>
>>>>>>
>>>>>>     table._create_references() # must follow above line to handle self 
>>>>>> references
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7663, in 
>>>>>> _create_references
>>>>>>
>>>>>>
>>>>>>     rtable = db[rtablename]
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7215, in 
>>>>>> __getitem__
>>>>>>
>>>>>>
>>>>>>     return self.__getattr__(str(key))
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7221, in 
>>>>>> __getattr__
>>>>>>
>>>>>>
>>>>>>     return self.lazy_define_table(tablena**me,*fields,**args)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 7189, in 
>>>>>> lazy_define_table
>>>>>>
>>>>>>
>>>>>>     polymodel=polymodel)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 935, in 
>>>>>> create_table
>>>>>>
>>>>>>
>>>>>>     self.create_sequence_and_**triggers(query,table)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 2483, in 
>>>>>> create_sequence_and_triggers
>>>>>>
>>>>>>
>>>>>>     self.execute(query)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 1709, in execute
>>>>>>
>>>>>>
>>>>>>     return self.log_execute(*a, **b)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/dal.py", line 1703, in 
>>>>>> log_execute
>>>>>>
>>>>>>
>>>>>>     ret = self.cursor.execute(*a, **b)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/dbapi.py"**, 
>>>>>> line 246, in _fn
>>>>>>
>>>>>>
>>>>>>     return fn(self, *args, **kwargs)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/dbapi.py"**, 
>>>>>> line 317, in execute
>>>>>>
>>>>>>
>>>>>>     self._execute(operation, args)
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/dbapi.py"**, 
>>>>>> line 322, in _execute
>>>>>>
>>>>>>
>>>>>>     self.cursor.execute(new_query, *new_args)
>>>>>>
>>>>>>
>>>>>>   File 
>>>>>> "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/**interface.py", line 
>>>>>> 399, in execute
>>>>>>
>>>>>>
>>>>>>     self._stmt.execute(*args, **kwargs)
>>>>>>
>>>>>>
>>>>>>   File 
>>>>>> "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/**interface.py", line 
>>>>>> 169, in execute
>>>>>>
>>>>>>
>>>>>>     self._row_desc, cmd = self.c.bind(self._portal_name, 
>>>>>> self._statement_name, args, self._parse_row_desc, kwargs.get("stream"))
>>>>>>
>>>>>>
>>>>>>   File "/home/pvalleri/src/web2py/**gluon/contrib/pg8000/protocol.**py", 
>>>>>> line 943, in _fn
>>>>>>
>>>>>>
>>>>>>     return fn(self, *args<span style="color: #660;" class="styled-by...
>>>>>>
>>>>>> Mostra originale 
>>>>>> <https://groups.google.com/group/web2py/msg/64de6b8ababbd2a3?dmode=source&output=gplain&noredirect>
>>>>>>
>>>>>>  -- 
>>>  
>>>  
>>>  
>>>
>>
>>
>>
>> -- 
>>  Paolo 
>>
>

-- 



Reply via email to