Commit 6929c0d4 authored by Ian Kelly's avatar Ian Kelly
Browse files

Fixed #6254: Made fetchone() in the oracle backend correctly convert

strings to unicode objects.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6995 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4ab27ab1
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -516,7 +516,10 @@ class FormatStylePlaceholderCursor(Database.Cursor):
        return Database.Cursor.executemany(self, query, new_param_list)

    def fetchone(self):
        return to_unicode(Database.Cursor.fetchone(self))
        row = Database.Cursor.fetchone(self)
        if row is None:
            return row
        return tuple([to_unicode(e) for e in row])

    def fetchmany(self, size=None):
        if size is None:
+28 −0
Original line number Diff line number Diff line
@@ -8,6 +8,13 @@ class Square(models.Model):
    def __unicode__(self):
        return "%s ** 2 == %s" % (self.root, self.square)

class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)

if connection.features.uses_case_insensitive_names:
    t_convert = lambda x: x.upper()
else:
@@ -32,4 +39,25 @@ __test__ = {'API_TESTS': """
>>> Square.objects.count()
11

#6254: fetchone, fetchmany, fetchall return strings as unicode objects
>>> Person(first_name="John", last_name="Doe").save()
>>> Person(first_name="Jane", last_name="Doe").save()
>>> Person(first_name="Mary", last_name="Agnelline").save()
>>> Person(first_name="Peter", last_name="Parker").save()
>>> Person(first_name="Clark", last_name="Kent").save()
>>> opts2 = Person._meta
>>> f3, f4 = opts2.get_field('first_name'), opts2.get_field('last_name')
>>> query2 = ('SELECT %s, %s FROM %s ORDER BY %s'
...          % (qn(f3.column), qn(f4.column), t_convert(opts2.db_table),
...             qn(f3.column)))
>>> cursor.execute(query2) and None or None
>>> cursor.fetchone()
(u'Clark', u'Kent')

>>> list(cursor.fetchmany(2))
[(u'Jane', u'Doe'), (u'John', u'Doe')]

>>> list(cursor.fetchall())
[(u'Mary', u'Agnelline'), (u'Peter', u'Parker')]

"""}