Fixed #20007 -- Configured psycopg2 to return UnicodeArrays

Thanks hogbait for the report.
This commit is contained in:
Eric Boersma 2013-09-06 20:43:41 -04:00 committed by Tim Graham
parent 926bc421d9
commit ded40142a9
3 changed files with 22 additions and 0 deletions

View File

@ -120,6 +120,7 @@ answer newbie questions, and generally made Django that much better:
Craig Blaszczyk <masterjakul@gmail.com> Craig Blaszczyk <masterjakul@gmail.com>
David Blewett <david@dawninglight.net> David Blewett <david@dawninglight.net>
Artem Gnilov <boobsd@gmail.com> Artem Gnilov <boobsd@gmail.com>
Eric Boersma <eric.boersma@gmail.com>
Matías Bordese Matías Bordese
Nate Bragg <jonathan.bragg@alum.rpi.edu> Nate Bragg <jonathan.bragg@alum.rpi.edu>
Sean Brant Sean Brant

View File

@ -31,6 +31,7 @@ DatabaseError = Database.DatabaseError
IntegrityError = Database.IntegrityError IntegrityError = Database.IntegrityError
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
psycopg2.extensions.register_adapter(SafeBytes, psycopg2.extensions.QuotedString) psycopg2.extensions.register_adapter(SafeBytes, psycopg2.extensions.QuotedString)
psycopg2.extensions.register_adapter(SafeText, psycopg2.extensions.QuotedString) psycopg2.extensions.register_adapter(SafeText, psycopg2.extensions.QuotedString)

View File

@ -963,3 +963,23 @@ class BackendUtilTests(TestCase):
'0.1') '0.1')
equal('0.1234567890', 12, 0, equal('0.1234567890', 12, 0,
'0') '0')
@unittest.skipUnless(
connection.vendor == 'postgresql',
"This test applies only to PostgreSQL")
class UnicodeArrayTestCase(TestCase):
def select(self, val):
cursor = connection.cursor()
cursor.execute("select %s", (val,))
return cursor.fetchone()[0]
def test_select_ascii_array(self):
a = ["awef"]
b = self.select(a)
self.assertEqual(a[0], b[0])
def test_select_unicode_array(self):
a = [u"ᄲawef"]
b = self.select(a)
self.assertEqual(a[0], b[0])