On Sun, 2011-04-10 at 11:52 +0200, Murray Cumming wrote: > On Sat, 2011-04-09 at 18:39 +0200, Vivien Malerba wrote: > > On 8 April 2011 22:12, Murray Cumming <[email protected]> wrote: > > > GObject+Introspection is working quite well for me now with libgda. > > > Thanks. I am glad that pygda is now obsolete, so it's one less module > > > for me to maintain. > > > > > > However, I'm getting an error when trying to get the values from the > > > DataModel with get_value_at(). For instance, this script > > > http://git.gnome.org/browse/pygda/tree/examples/gda/select.py?h=introspection > > > produces this error: > > > > > > Traceback (most recent call last): > > > File "./select.py", line 61, in <module> > > > main () > > > File "./select.py", line 57, in main > > > print " value=", data_model.get_value_at(col_index, > > > row_index); > > > File "/opt/gnome230/lib/python2.7/site-packages/gi/types.py", line 44, > > > in function > > > return info.invoke(*args) > > > TypeError: unknown type (null) > > > > > > > > > Presumably it doesn't like GdaValues with GType=0 (when > > > gda_value_is_null(gvalue) is true). > > > > Yes, the a GValue with a 0 GType represents a SQL NULL value, whereas > > if the returned value is NULL (the C NULL) then it means there was an > > error retreiving the value, hence the difference between the 2. > > Can we just ignore that meaning of C NULL? We might need to check that > everything throws a GError instead, but the GdaConnection functions > already do: > http://developer.gnome.org/libgda/unstable/GdaConnection.html#gda-connection-execute-select-command > > Otherwise we would need to distinguish between a SQL Null value and a C > NULL value, which would be hard in Python unless we have a Gda.Null > class with a GDA_TYPE_NULL GType. I don't think it's worth it unless we > can't always use GError instead.
We might also want some automatic Python conversion between Gda.Numeric and python types such as Int. Otherwise we see errors such as this: TypeError: unsupported operand type(s) for +=: 'Numeric' and 'int'. We can instead do number = datamodel.get_value_at(0,0) actual_number = float(number.number) but that probably converts the number based on the current locale, instead of the C locale used by the GdaNumeric::number string. -- [email protected] www.murrayc.com www.openismus.com _______________________________________________ gnome-db-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-db-list
