Any idea about this? Currently I can't perform migrations on GAE.

On Wednesday, October 3, 2012 4:08:58 PM UTC+13, Matt wrote:
>
> Just testing it now, Getting an error on GAE + CloudSQL:
>
>  File "/Projects/www//applications/app/models/db.py", line 45, in <module>
>     auth.define_tables()
>   File "/Projects/www/gluon/tools.py", line 1506, in define_tables
>     format='%(first_name)s %(last_name)s (%(id)s)'))
>   File "/Projects/www/gluon/dal.py", line 7050, in define_table
>     table = self.lazy_define_table(tablename,*fields,**args)
>   File "/Projects/www/gluon/dal.py", line 7081, in lazy_define_table
>     polymodel=polymodel)
>   File "/Projects/www/gluon/dal.py", line 935, in create_table
>     self.file_close(tfile)
>   File "/Projects/www/gluon/dal.py", line 4005, in file_close
>     fileobj.close()
> AttributeError: DatabaseStoredFile instance has no attribute 'close'
>
> Matt
>
> On Tuesday, October 2, 2012 3:32:16 PM UTC+13, Massimo Di Pierro wrote:
>>
>> There is a big change in DAL.
>>
>> a = DAL(uri)
>> b = DAL(uri)
>>
>> now "a is b" because DAL is a singleton (almost). It is a thread local 
>> singleton as long a uri is specified.
>> What does this mean in practice?
>>
>> It means that unless you have lazy virtual fields, Row and Rows objects 
>> can be serialized (pickled), properly cached, and stored in session.
>> For example:
>>
>>     session.rows = session.rows or db(db.mytable).select()
>>
>> and you can still do:
>>
>>     session.rows.first().update_record(....)
>>
>> has many practical implications in the way you program and there is even 
>> more we could do. In the future we may be able to serialize every DAL 
>> expression.
>>
>> This is a big change in the source and the internal logic is complex. 
>> It may have some unforeseen side effects.
>> PLEASE TEST THAT TRUNK DOES NOT BREAK YOUR CODE before this makes it into 
>> stable.
>>
>> massimo
>>
>>
>>
>>
>>
>>

-- 



Reply via email to