Opened 17 years ago

Last modified 17 years ago

#5558 closed

istartswith lookup fails with ORACLE in r6393 — at Initial Version

Reported by: frank.hoffsummer@… Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Keywords: Oracle oracle db backend startswith istartswith
Cc: ian.g.kelly@… Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

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(channelnameistartswith="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

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top