On Wednesday, November 24, 2010 02:32:20 pm John Fabiani wrote:
> On Wednesday, November 24, 2010 11:03:22 am Sibylle Koczian wrote:
> > Hello,
> >
> > Am 23.11.2010 17:12, schrieb John Fabiani:
> > > On Tuesday, November 23, 2010 07:51:38 am Sibylle Koczian wrote:
> > >> Am 22.11.2010 16:09, schrieb John Fabiani:
> > >>> What is the data type returned from psycopg? If you review what is
> > >>> being done in dbPostgres.py (that is where the python data types are
> > >>> being set) it might be possible to add the data type.
> > >>
> > >> Psycopg returns datetime.timedelta, and this isn't always right
> > >> (interval values of one or more months or years). I'm using the
> > >> version that comes with Ubuntu, so it's probably compiled without mx
> > >> support, even if mx is installed.
> > >
> > > Here is how - make a small addition to the dbPostgres.py. At
> > > approximately line 173 add the return value to the dict.
> > >
> > > fldTypeDict= {"int4":"I", "int8":"I", "int2":"I","varchar": "C",
> > > "char": "C",'bpchar': 'C', "bool":"B", "text": "M", "numeric":"N",
> > > "double":"F", "real":"F","float4":"F", "float8":"F", "datetime":"T",
> > > "timestamp":"T", "date": "D","bytea": "L", "point":"C", "box":"C",
> > > "circle":"C", "lseg":"C", "polygon":"C", "path":"C","oid":"I"}
> > >
> > > You will notice I have NOT included the data type of interval (BTW I'm
> > > not sure what psycopg returns as a data type - you'll have to determine
> > > that info). For example if psycopg returns the string 'interval' you
> > > would add "interval":'C'
> > > to end of the dict.
> >
> > I can't get that to run. As far as I can tell from printing query
> > results psycopg2 returns datetime.timedelta for interval values, so I've
> > put "timedelta":"C" into the fldTypeDict. But that raises a TypeError:
> >
> > Traceback (most recent call last):
> > File
> >
> > "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_misc.py", line
> > 1342, in Notify
> >
> > self.notify()
> >
> > File
> >
> > "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line
> > 14716, in Notify
> >
> > self.result = self.callable(*self.args, **self.kwargs)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dForm.py", line 126, in
> >
> > __update
> >
> > super(BaseForm, self).update()
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 1298,
> >
> > in update
> >
> > self.raiseEvent(dEvents.Update)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 991,
> >
> > in raiseEvent
> >
> > super(dPemMixin, self).raiseEvent(eventClass, nativeEvent, *args,
> >
> > **kwargs)
> >
> > File "/home/sib/src/dabo-trunk/dabo/lib/eventMixin.py", line 96, in
> >
> > raiseEvent
> >
> > bindingFunction(event)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 1278,
> >
> > in __onUpdate
> >
> > self.update()
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 1298,
> >
> > in update
> >
> > self.raiseEvent(dEvents.Update)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 991,
> >
> > in raiseEvent
> >
> > super(dPemMixin, self).raiseEvent(eventClass, nativeEvent, *args,
> >
> > **kwargs)
> >
> > File "/home/sib/src/dabo-trunk/dabo/lib/eventMixin.py", line 96, in
> >
> > raiseEvent
> >
> > bindingFunction(event)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dPemMixin.py", line 1278,
> >
> > in __onUpdate
> >
> > self.update()
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/dDataControlMixinBase.py",
> >
> > line 102, in update
> >
> > self.__dataUpdate()
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/dDataControlMixinBase.py",
> >
> > line 121, in __dataUpdate
> >
> > self.Value = self.getBlankValue()
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dTextBoxMixin.py", line
> >
> > 744, in _setValue
> >
> > _oldVal = self._oldVal = self.Value
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dTextBoxMixin.py", line
> >
> > 698, in _getValue
> >
> > convertedVal = self.convertStringValueToDataType(strVal, dataType)
> >
> > File "/home/sib/src/dabo-trunk/dabo/ui/uiwx/dTextBoxMixin.py", line
> >
> > 553, in convertStringValueToDataType
> >
> > retVal = dataType(strVal)
> >
> > TypeError: unsupported type for timedelta days component: unicode
> >
> > Greetings,
> > Sibylle
>
> As I said I did not know the data type being returned. You have several
> choices here. You could use the extensions psycopg provides as Adrian
> suggested. I haven't try using them. We may decide in the future to add
> the extensions - but that's a different discussion. And the last way to
> do the convert yourself.
>
> But are you sure psycopg2 is returning the string "timedelta"?
>
> Johnf
I should have said - are you sure postgres is return the string "timedelta"?
I would have expected "interval"
Johnf
--- StripMime Report -- processed MIME parts ---
multipart/alternative
text/plain (text body -- kept)
text/html
---
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message:
http://leafe.com/archives/byMID/[email protected]