diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-27 20:03:33 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-27 20:03:33 +0000 |
| commit | cd6af2e03b8ffba0c7d6b8906c178fd1aa742920 (patch) | |
| tree | 4da300a9f8441274624b3db49236322476954c07 /test/sql | |
| parent | 8b1096eea4fdc081a803279c57226ac07481d788 (diff) | |
| download | sqlalchemy-cd6af2e03b8ffba0c7d6b8906c178fd1aa742920.tar.gz | |
working on pyodbc / mxodbc
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_query.py | 13 | ||||
| -rw-r--r-- | test/sql/test_returning.py | 3 | ||||
| -rw-r--r-- | test/sql/test_rowcount.py | 7 | ||||
| -rw-r--r-- | test/sql/test_types.py | 8 |
4 files changed, 24 insertions, 7 deletions
diff --git a/test/sql/test_query.py b/test/sql/test_query.py index d7bca1af4..62da772a4 100644 --- a/test/sql/test_query.py +++ b/test/sql/test_query.py @@ -78,6 +78,13 @@ class QueryTest(TestBase): detects rows that had defaults and post-fetches. """ + # verify implicit_returning is working + if engine.dialect.implicit_returning: + ins = table.insert() + comp = ins.compile(engine, column_keys=list(values)) + if not set(values).issuperset(c.key for c in table.primary_key): + assert comp.returning + result = engine.execute(table.insert(), **values) ret = values.copy() @@ -85,13 +92,17 @@ class QueryTest(TestBase): ret[col.key] = id if result.lastrow_has_defaults(): - criterion = and_(*[col==id for col, id in zip(table.primary_key, result.inserted_primary_key)]) + criterion = and_(*[col==id for col, id in + zip(table.primary_key, result.inserted_primary_key)]) row = engine.execute(table.select(criterion)).first() for c in table.c: ret[c.key] = row[c] return ret if testing.against('firebird', 'postgresql', 'oracle', 'mssql'): + assert testing.db.dialect.implicit_returning + + if testing.db.dialect.implicit_returning: test_engines = [ engines.testing_engine(options={'implicit_returning':False}), engines.testing_engine(options={'implicit_returning':True}), diff --git a/test/sql/test_returning.py b/test/sql/test_returning.py index a36ce3cd8..481eba825 100644 --- a/test/sql/test_returning.py +++ b/test/sql/test_returning.py @@ -95,6 +95,7 @@ class ReturningTest(TestBase, AssertsExecutionResults): @testing.fails_on('postgresql', '') @testing.fails_on('oracle', '') + @testing.crashes('mssql+mxodbc', 'Raises an error') def test_executemany(): # return value is documented as failing with psycopg2/executemany result2 = table.insert().returning(table).execute( @@ -112,8 +113,6 @@ class ReturningTest(TestBase, AssertsExecutionResults): test_executemany() - result3 = table.insert().returning(table.c.id).execute({'persons': 4, 'full': False}) - eq_([dict(row) for row in result3], [{'id': 4}]) @testing.exclude('firebird', '<', (2, 1), '2.1+ feature') diff --git a/test/sql/test_rowcount.py b/test/sql/test_rowcount.py index 82301a4a5..6da25b914 100644 --- a/test/sql/test_rowcount.py +++ b/test/sql/test_rowcount.py @@ -4,6 +4,9 @@ from sqlalchemy.test import * class FoundRowsTest(TestBase, AssertsExecutionResults): """tests rowcount functionality""" + + __requires__ = ('sane_rowcount', ) + @classmethod def setup_class(cls): metadata = MetaData(testing.db) @@ -11,7 +14,9 @@ class FoundRowsTest(TestBase, AssertsExecutionResults): global employees_table employees_table = Table('employees', metadata, - Column('employee_id', Integer, Sequence('employee_id_seq', optional=True), primary_key=True), + Column('employee_id', Integer, + Sequence('employee_id_seq', optional=True), + primary_key=True), Column('name', String(50)), Column('department', String(1)), ) diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 53f4d8d91..29b337eda 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -112,7 +112,7 @@ class PickleMetadataTest(TestBase): class UserDefinedTest(TestBase): """tests user-defined types.""" - def testprocessing(self): + def test_processing(self): global users users.insert().execute( @@ -132,7 +132,7 @@ class UserDefinedTest(TestBase): [1800, 2250, 1350], l ): - for col in row[1:5]: + for col in list(row)[1:5]: eq_(col, assertstr) eq_(row[5], assertint) eq_(row[6], assertint2) @@ -1113,7 +1113,7 @@ class BooleanTest(TestBase, AssertsExecutionResults): global bool_table metadata = MetaData(testing.db) bool_table = Table('booltest', metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, autoincrement=False), Column('value', Boolean), Column('unconstrained_value', Boolean(create_constraint=False)), ) @@ -1156,6 +1156,8 @@ class BooleanTest(TestBase, AssertsExecutionResults): @testing.fails_on('mysql', "The CHECK clause is parsed but ignored by all storage engines.") + @testing.fails_on('mssql', + "FIXME: MS-SQL 2005 doesn't honor CHECK ?!?") @testing.skip_if(lambda: testing.db.dialect.supports_native_boolean) def test_constraint(self): assert_raises((exc.IntegrityError, exc.ProgrammingError), |
