Django

Code

Changeset 6995

Show
Ignore:
Timestamp:
01/04/08 16:51:22 (6 months ago)
Author:
ikelly
Message:

Fixed #6254: Made fetchone() in the oracle backend correctly convert
strings to unicode objects.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/backends/oracle/base.py

    r6965 r6995  
    517517 
    518518    def fetchone(self): 
    519         return to_unicode(Database.Cursor.fetchone(self)) 
     519        row = Database.Cursor.fetchone(self) 
     520        if row is None: 
     521            return row 
     522        return tuple([to_unicode(e) for e in row]) 
    520523 
    521524    def fetchmany(self, size=None): 
  • django/trunk/tests/regressiontests/backends/models.py

    r6354 r6995  
    88    def __unicode__(self): 
    99        return "%s ** 2 == %s" % (self.root, self.square) 
     10 
     11class Person(models.Model): 
     12    first_name = models.CharField(max_length=20) 
     13    last_name = models.CharField(max_length=20) 
     14 
     15    def __unicode__(self): 
     16        return u'%s %s' % (self.first_name, self.last_name) 
    1017 
    1118if connection.features.uses_case_insensitive_names: 
     
    334011 
    3441 
     42#6254: fetchone, fetchmany, fetchall return strings as unicode objects 
     43>>> Person(first_name="John", last_name="Doe").save() 
     44>>> Person(first_name="Jane", last_name="Doe").save() 
     45>>> Person(first_name="Mary", last_name="Agnelline").save() 
     46>>> Person(first_name="Peter", last_name="Parker").save() 
     47>>> Person(first_name="Clark", last_name="Kent").save() 
     48>>> opts2 = Person._meta 
     49>>> f3, f4 = opts2.get_field('first_name'), opts2.get_field('last_name') 
     50>>> query2 = ('SELECT %s, %s FROM %s ORDER BY %s' 
     51...          % (qn(f3.column), qn(f4.column), t_convert(opts2.db_table), 
     52...             qn(f3.column))) 
     53>>> cursor.execute(query2) and None or None 
     54>>> cursor.fetchone() 
     55(u'Clark', u'Kent') 
     56 
     57>>> list(cursor.fetchmany(2)) 
     58[(u'Jane', u'Doe'), (u'John', u'Doe')] 
     59 
     60>>> list(cursor.fetchall()) 
     61[(u'Mary', u'Agnelline'), (u'Peter', u'Parker')] 
     62 
    3563"""}