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