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  


_______________________________________________
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]

Reply via email to