]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add a test specific to sqlite testing cursor.description encoding (should
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 26 May 2013 20:58:37 +0000 (16:58 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 26 May 2013 20:58:37 +0000 (16:58 -0400)
probably be one in test_query or test_unicode...)
- fix up test_unitofwork

lib/sqlalchemy/dialects/sqlite/pysqlite.py
lib/sqlalchemy/engine/result.py
test/dialect/test_sqlite.py
test/orm/test_unitofwork.py

index 32ee1299fd13888edd9fb732924e9ba8b54ce27d..ad0dd52922305182ad921a120f7e665d49b74cef 100644 (file)
@@ -267,7 +267,8 @@ class SQLiteDialect_pysqlite(SQLiteDialect):
         }
     )
 
-    description_encoding = None
+    if not util.py2k:
+        description_encoding = None
 
     driver = 'pysqlite'
 
index 65ce3b742378c0206d1b07bc609a836ff6c3910f..4261a5877b1467a00e5ef228376272ef2987e0c1 100644 (file)
@@ -215,6 +215,8 @@ class ResultMetaData(object):
             processors.append(processor)
             rec = (processor, obj, i)
 
+#            name.encode('ascii')
+
             # indexes as keys. This is only needed for the Python version of
             # RowProxy (the C version uses a faster path for integer indexes).
             primary_keymap[i] = rec
index 5410a64cbd9d48b20327b9ff269de9c7c8734073..4ede13ff63a76d6abcfeb58b78bbbba16c6a47fb 100644 (file)
@@ -1,9 +1,16 @@
+#!coding: utf-8
+
 """SQLite-specific tests."""
 
 from sqlalchemy.testing import eq_, assert_raises, \
     assert_raises_message
 import datetime
-from sqlalchemy import *
+from sqlalchemy import Table, String, select, Text, CHAR, bindparam, Column,\
+    Unicode, Date, MetaData, UnicodeText, Time, Integer, TIMESTAMP, \
+    Boolean, func, NUMERIC, DateTime, extract, ForeignKey, text, Numeric,\
+    DefaultClause, and_, DECIMAL, TypeDecorator, create_engine, Float, \
+    INTEGER, UniqueConstraint, DATETIME, DATE, TIME, BOOLEAN
+from sqlalchemy.util import u, ue
 from sqlalchemy import exc, sql, schema, pool, types as sqltypes, util
 from sqlalchemy.dialects.sqlite import base as sqlite, \
     pysqlite as pysqlite_dialect
@@ -485,6 +492,20 @@ class DialectTest(fixtures.TestBase, AssertsExecutionResults):
                     'constrained_columns': ['tid']
                 }])
 
+    @testing.provide_metadata
+    def test_description_encoding(self):
+        # amazingly, pysqlite seems to still deliver cursor.description
+        # as encoded bytes in py2k
+
+        t = Table('x', self.metadata,
+                Column(u('méil'), Integer, primary_key=True),
+                Column(ue('\u6e2c\u8a66'), Integer),
+            )
+        self.metadata.create_all(testing.db)
+
+        result = testing.db.execute(t.select())
+        assert u('méil') in result.keys()
+        assert ue('\u6e2c\u8a66') in result.keys()
 
     def test_attached_as_schema(self):
         cx = testing.db.connect()
index 1675ed60f1f8d067739eb53181c1d0bd4edb64a2..4b9799d476be327dc8e923575955bd37dc19ae6d 100644 (file)
@@ -6,6 +6,7 @@ import datetime
 from sqlalchemy.orm import mapper as orm_mapper
 
 import sqlalchemy as sa
+from sqlalchemy.util import u, ue, b
 from sqlalchemy import Integer, String, ForeignKey, literal_column, event
 from sqlalchemy.testing import engines
 from sqlalchemy import testing
@@ -87,7 +88,7 @@ class UnicodeTest(fixtures.MappedTest):
 
         mapper(Test, uni_t1)
 
-        txt = "\u0160\u0110\u0106\u010c\u017d"
+        txt = ue("\u0160\u0110\u0106\u010c\u017d")
         t1 = Test(id=1, txt=txt)
         self.assert_(t1.txt == txt)
 
@@ -107,7 +108,7 @@ class UnicodeTest(fixtures.MappedTest):
             't2s': relationship(Test2)})
         mapper(Test2, uni_t2)
 
-        txt = "\u0160\u0110\u0106\u010c\u017d"
+        txt = ue("\u0160\u0110\u0106\u010c\u017d")
         t1 = Test(txt=txt)
         t1.t2s.append(Test2())
         t1.t2s.append(Test2())
@@ -132,16 +133,16 @@ class UnicodeSchemaTest(fixtures.MappedTest):
     @classmethod
     def define_tables(cls, metadata):
         t1 = Table('unitable1', metadata,
-              Column('méil', Integer, primary_key=True, key='a', test_needs_autoincrement=True),
-              Column('\u6e2c\u8a66', Integer, key='b'),
+              Column(u('méil'), Integer, primary_key=True, key='a', test_needs_autoincrement=True),
+              Column(ue('\u6e2c\u8a66'), Integer, key='b'),
               Column('type',  String(20)),
               test_needs_fk=True,
               test_needs_autoincrement=True)
-        t2 = Table('Unitéble2', metadata,
-              Column('méil', Integer, primary_key=True, key="cc", test_needs_autoincrement=True),
-              Column('\u6e2c\u8a66', Integer,
+        t2 = Table(u('Unitéble2'), metadata,
+              Column(u('méil'), Integer, primary_key=True, key="cc", test_needs_autoincrement=True),
+              Column(ue('\u6e2c\u8a66'), Integer,
                      ForeignKey('unitable1.a'), key="d"),
-              Column('\u6e2c\u8a66_2', Integer, key="e"),
+              Column(ue('\u6e2c\u8a66_2'), Integer, key="e"),
               test_needs_fk=True,
               test_needs_autoincrement=True)
 
@@ -237,13 +238,7 @@ class BinaryHistTest(fixtures.MappedTest, testing.AssertsExecutionResults):
     def test_binary_equality(self):
         Foo, t1 = self.classes.Foo, self.tables.t1
 
-
-# start Py3K
-        data = b"this is some data"
-# end Py3K
-# start Py2K
-#        data = "this is some data"
-# end Py2K
+        data = b("this is some data")
 
         mapper(Foo, t1)
 
@@ -2128,7 +2123,6 @@ class SaveTest3(fixtures.MappedTest):
 
         assert assoc.count().scalar() == 2
         i.keywords = []
-        print(i.keywords)
         session.flush()
         assert assoc.count().scalar() == 0