summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-05-26 16:58:37 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-05-26 16:58:37 -0400
commit4e930a7f780f0997e8f7f9ef4efe5c57ad86efd0 (patch)
tree00160eba433ec698b6f849b48c551e09c839cbfd
parentb3654ee37abe7af3d83098cd8de1980369a3fcba (diff)
downloadsqlalchemy-4e930a7f780f0997e8f7f9ef4efe5c57ad86efd0.tar.gz
- add a test specific to sqlite testing cursor.description encoding (should
probably be one in test_query or test_unicode...) - fix up test_unitofwork
-rw-r--r--lib/sqlalchemy/dialects/sqlite/pysqlite.py3
-rw-r--r--lib/sqlalchemy/engine/result.py2
-rw-r--r--test/dialect/test_sqlite.py23
-rw-r--r--test/orm/test_unitofwork.py26
4 files changed, 36 insertions, 18 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/pysqlite.py b/lib/sqlalchemy/dialects/sqlite/pysqlite.py
index 32ee1299f..ad0dd5292 100644
--- a/lib/sqlalchemy/dialects/sqlite/pysqlite.py
+++ b/lib/sqlalchemy/dialects/sqlite/pysqlite.py
@@ -267,7 +267,8 @@ class SQLiteDialect_pysqlite(SQLiteDialect):
}
)
- description_encoding = None
+ if not util.py2k:
+ description_encoding = None
driver = 'pysqlite'
diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py
index 65ce3b742..4261a5877 100644
--- a/lib/sqlalchemy/engine/result.py
+++ b/lib/sqlalchemy/engine/result.py
@@ -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
diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py
index 5410a64cb..4ede13ff6 100644
--- a/test/dialect/test_sqlite.py
+++ b/test/dialect/test_sqlite.py
@@ -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()
diff --git a/test/orm/test_unitofwork.py b/test/orm/test_unitofwork.py
index 1675ed60f..4b9799d47 100644
--- a/test/orm/test_unitofwork.py
+++ b/test/orm/test_unitofwork.py
@@ -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