#5558: istartswith lookup fails with ORACLE in r6393
---------------------------------------------------------------+------------
Reporter: [EMAIL PROTECTED] | Owner:
mboersma
Status: assigned |
Component: Database wrapper
Version: SVN |
Resolution:
Keywords: Oracle oracle db backend startswith istartswith |
Stage: Unreviewed
Has_patch: 0 |
Needs_docs: 0
Needs_tests: 0 |
Needs_better_patch: 0
---------------------------------------------------------------+------------
Old description:
> I have an Oracle9i database and access that from a PowerPC Mac using the
> latest cx_Oracle 4.3.1 and python 2.5.1
> filtering a queryset with startswith or istartswith returns the following
> oracle error
> (this seems to be model independent, and not related to my code)
>
> In [27]: JobStatus.objects.filter(channel__name__istartswith="a")
> Out[27]:
> ---------------------------------------------------------------------------
> <class 'cx_Oracle.DatabaseError'> Traceback (most recent call
> last)
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/mcc/<ipython console> in <module>()
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/IPython/Prompts.py in __call__(self, arg)
> 521
> 522 # and now call a possibly user-defined print
> mechanism
> --> 523 manipulated_val = self.display(arg)
> 524
> 525 # user display hooks can change the variable to be
> stored in
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/IPython/Prompts.py in _display(self, arg)
> 545 """
> 546
> --> 547 return self.shell.hooks.result_display(arg)
> 548
> 549 # Assign the default display method:
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/IPython/hooks.py in __call__(self, *args, **kw)
> 132 #print "prio",prio,"cmd",cmd #dbg
> 133 try:
> --> 134 ret = cmd(*args, **kw)
> 135 return ret
> 136 except ipapi.TryNext, exc:
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/IPython/hooks.py in result_display(self, arg)
> 160
> 161 if self.rc.pprint:
> --> 162 out = pformat(arg)
> 163 if '\n' in out:
> 164 # So that multi-line strings line up with the left
> column of
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
> in pformat(self, object)
> 109 def pformat(self, object):
> 110 sio = _StringIO()
> --> 111 self._format(object, sio, 0, 0, {}, 0)
> 112 return sio.getvalue()
> 113
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
> in _format(self, object, stream, indent, allowance, context, level)
> 127 self._readable = False
> 128 return
> --> 129 rep = self._repr(object, context, level - 1)
> 130 typ = _type(object)
> 131 sepLines = _len(rep) > (self._width - 1 - indent -
> allowance)
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
> in _repr(self, object, context, level)
> 193 def _repr(self, object, context, level):
> 194 repr, readable, recursive = self.format(object,
> context.copy(),
> --> 195 self._depth,
> level)
> 196 if not readable:
> 197 self._readable = False
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
> in format(self, object, context, maxlevels, level)
> 205 and whether the object represents a recursive construct.
> 206 """
> --> 207 return _safe_repr(object, context, maxlevels, level)
> 208
> 209
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
> in _safe_repr(object, context, maxlevels, level)
> 290 return format % _commajoin(components), readable,
> recursive
> 291
> --> 292 rep = repr(object)
> 293 return rep, (rep and not rep.startswith('<')), False
> 294
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/django/db/models/query.py in __repr__(self)
> 106
> 107 def __repr__(self):
> --> 108 return repr(self._get_data())
> 109
> 110 def __len__(self):
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/django/db/models/query.py in _get_data(self)
> 480 def _get_data(self):
> 481 if self._result_cache is None:
> --> 482 self._result_cache = list(self.iterator())
> 483 return self._result_cache
> 484
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/django/db/backends/oracle/base.py in iterator(self)
> 120
> 121 cursor = connection.cursor()
> --> 122 cursor.execute(full_query, params)
> 123
> 124 fill_cache = self._select_related
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/django/db/backends/util.py in execute(self, sql, params)
> 17 start = time()
> 18 try:
> ---> 19 return self.cursor.execute(sql, params)
> 20 finally:
> 21 stop = time()
>
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
> packages/django/db/backends/oracle/base.py in execute(self, query,
> params)
> 468 query = query[:-1]
> 469 query = smart_str(query, self.charset) % tuple(args)
> --> 470 return Database.Cursor.execute(self, query, params)
> 471
> 472 def executemany(self, query, params=None):
>
> <class 'cx_Oracle.DatabaseError'>: ORA-01425: escape character must be
> character string of length 1
New description:
I have an Oracle9i database and access that from a PowerPC Mac using the
latest cx_Oracle 4.3.1 and python 2.5.1
filtering a queryset with startswith or istartswith returns the following
oracle error
(this seems to be model independent, and not related to my code)
{{{
In [27]: JobStatus.objects.filter(channel__name__istartswith="a")
Out[27]:
---------------------------------------------------------------------------
<class 'cx_Oracle.DatabaseError'> Traceback (most recent call
last)
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/mcc/<ipython console> in <module>()
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/IPython/Prompts.py in __call__(self, arg)
521
522 # and now call a possibly user-defined print mechanism
--> 523 manipulated_val = self.display(arg)
524
525 # user display hooks can change the variable to be
stored in
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/IPython/Prompts.py in _display(self, arg)
545 """
546
--> 547 return self.shell.hooks.result_display(arg)
548
549 # Assign the default display method:
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/IPython/hooks.py in __call__(self, *args, **kw)
132 #print "prio",prio,"cmd",cmd #dbg
133 try:
--> 134 ret = cmd(*args, **kw)
135 return ret
136 except ipapi.TryNext, exc:
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/IPython/hooks.py in result_display(self, arg)
160
161 if self.rc.pprint:
--> 162 out = pformat(arg)
163 if '\n' in out:
164 # So that multi-line strings line up with the left
column of
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
in pformat(self, object)
109 def pformat(self, object):
110 sio = _StringIO()
--> 111 self._format(object, sio, 0, 0, {}, 0)
112 return sio.getvalue()
113
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
in _format(self, object, stream, indent, allowance, context, level)
127 self._readable = False
128 return
--> 129 rep = self._repr(object, context, level - 1)
130 typ = _type(object)
131 sepLines = _len(rep) > (self._width - 1 - indent -
allowance)
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
in _repr(self, object, context, level)
193 def _repr(self, object, context, level):
194 repr, readable, recursive = self.format(object,
context.copy(),
--> 195 self._depth,
level)
196 if not readable:
197 self._readable = False
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
in format(self, object, context, maxlevels, level)
205 and whether the object represents a recursive construct.
206 """
--> 207 return _safe_repr(object, context, maxlevels, level)
208
209
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pprint.py
in _safe_repr(object, context, maxlevels, level)
290 return format % _commajoin(components), readable,
recursive
291
--> 292 rep = repr(object)
293 return rep, (rep and not rep.startswith('<')), False
294
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/django/db/models/query.py in __repr__(self)
106
107 def __repr__(self):
--> 108 return repr(self._get_data())
109
110 def __len__(self):
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/django/db/models/query.py in _get_data(self)
480 def _get_data(self):
481 if self._result_cache is None:
--> 482 self._result_cache = list(self.iterator())
483 return self._result_cache
484
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/django/db/backends/oracle/base.py in iterator(self)
120
121 cursor = connection.cursor()
--> 122 cursor.execute(full_query, params)
123
124 fill_cache = self._select_related
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/django/db/backends/util.py in execute(self, sql, params)
17 start = time()
18 try:
---> 19 return self.cursor.execute(sql, params)
20 finally:
21 stop = time()
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/django/db/backends/oracle/base.py in execute(self, query, params)
468 query = query[:-1]
469 query = smart_str(query, self.charset) % tuple(args)
--> 470 return Database.Cursor.execute(self, query, params)
471
472 def executemany(self, query, params=None):
<class 'cx_Oracle.DatabaseError'>: ORA-01425: escape character must be
character string of length 1
}}}
Comment (by ubernostrum):
(fixing formatting in description)
--
Ticket URL: <http://code.djangoproject.com/ticket/5558#comment:4>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---