drop SQLAlchemy < 0.6 compatibility code
This commit is contained in:
parent
e4ad6e357f
commit
3619347441
@ -13,7 +13,6 @@ from sqlalchemy import __version__ as _sa_version
|
|||||||
warnings.simplefilter('always', DeprecationWarning)
|
warnings.simplefilter('always', DeprecationWarning)
|
||||||
|
|
||||||
_sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
|
_sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
|
||||||
SQLA_06 = _sa_version >= (0, 6)
|
|
||||||
SQLA_07 = _sa_version >= (0, 7)
|
SQLA_07 = _sa_version >= (0, 7)
|
||||||
|
|
||||||
del re
|
del re
|
||||||
|
@ -17,23 +17,19 @@ from sqlalchemy.schema import (ForeignKeyConstraint,
|
|||||||
Index)
|
Index)
|
||||||
|
|
||||||
from migrate import exceptions
|
from migrate import exceptions
|
||||||
from migrate.changeset import constraint, SQLA_06
|
from migrate.changeset import constraint
|
||||||
|
|
||||||
if not SQLA_06:
|
from sqlalchemy.schema import AddConstraint, DropConstraint
|
||||||
from sqlalchemy.sql.compiler import SchemaGenerator, SchemaDropper
|
from sqlalchemy.sql.compiler import DDLCompiler
|
||||||
else:
|
SchemaGenerator = SchemaDropper = DDLCompiler
|
||||||
from sqlalchemy.schema import AddConstraint, DropConstraint
|
|
||||||
from sqlalchemy.sql.compiler import DDLCompiler
|
|
||||||
SchemaGenerator = SchemaDropper = DDLCompiler
|
|
||||||
|
|
||||||
|
|
||||||
class AlterTableVisitor(SchemaVisitor):
|
class AlterTableVisitor(SchemaVisitor):
|
||||||
"""Common operations for ``ALTER TABLE`` statements."""
|
"""Common operations for ``ALTER TABLE`` statements."""
|
||||||
|
|
||||||
if SQLA_06:
|
# engine.Compiler looks for .statement
|
||||||
# engine.Compiler looks for .statement
|
# when it spawns off a new compiler
|
||||||
# when it spawns off a new compiler
|
statement = ClauseElement()
|
||||||
statement = ClauseElement()
|
|
||||||
|
|
||||||
def append(self, s):
|
def append(self, s):
|
||||||
"""Append content to the SchemaIterator's query buffer."""
|
"""Append content to the SchemaIterator's query buffer."""
|
||||||
@ -123,9 +119,8 @@ class ANSIColumnGenerator(AlterTableVisitor, SchemaGenerator):
|
|||||||
name=column.primary_key_name)
|
name=column.primary_key_name)
|
||||||
cons.create()
|
cons.create()
|
||||||
|
|
||||||
if SQLA_06:
|
def add_foreignkey(self, fk):
|
||||||
def add_foreignkey(self, fk):
|
self.connection.execute(AddConstraint(fk))
|
||||||
self.connection.execute(AddConstraint(fk))
|
|
||||||
|
|
||||||
class ANSIColumnDropper(AlterTableVisitor, SchemaDropper):
|
class ANSIColumnDropper(AlterTableVisitor, SchemaDropper):
|
||||||
"""Extends ANSI SQL dropper for column dropping (``ALTER TABLE
|
"""Extends ANSI SQL dropper for column dropping (``ALTER TABLE
|
||||||
@ -232,10 +227,7 @@ class ANSISchemaChanger(AlterTableVisitor, SchemaGenerator):
|
|||||||
|
|
||||||
def _visit_column_type(self, table, column, delta):
|
def _visit_column_type(self, table, column, delta):
|
||||||
type_ = delta['type']
|
type_ = delta['type']
|
||||||
if SQLA_06:
|
type_text = str(type_.compile(dialect=self.dialect))
|
||||||
type_text = str(type_.compile(dialect=self.dialect))
|
|
||||||
else:
|
|
||||||
type_text = type_.dialect_impl(self.dialect).get_col_spec()
|
|
||||||
self.append("TYPE %s" % type_text)
|
self.append("TYPE %s" % type_text)
|
||||||
|
|
||||||
def _visit_column_name(self, table, column, delta):
|
def _visit_column_name(self, table, column, delta):
|
||||||
@ -279,75 +271,17 @@ class ANSIConstraintCommon(AlterTableVisitor):
|
|||||||
def visit_migrate_unique_constraint(self, *p, **k):
|
def visit_migrate_unique_constraint(self, *p, **k):
|
||||||
self._visit_constraint(*p, **k)
|
self._visit_constraint(*p, **k)
|
||||||
|
|
||||||
if SQLA_06:
|
class ANSIConstraintGenerator(ANSIConstraintCommon, SchemaGenerator):
|
||||||
class ANSIConstraintGenerator(ANSIConstraintCommon, SchemaGenerator):
|
def _visit_constraint(self, constraint):
|
||||||
def _visit_constraint(self, constraint):
|
constraint.name = self.get_constraint_name(constraint)
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
self.append(self.process(AddConstraint(constraint)))
|
||||||
self.append(self.process(AddConstraint(constraint)))
|
self.execute()
|
||||||
self.execute()
|
|
||||||
|
|
||||||
class ANSIConstraintDropper(ANSIConstraintCommon, SchemaDropper):
|
class ANSIConstraintDropper(ANSIConstraintCommon, SchemaDropper):
|
||||||
def _visit_constraint(self, constraint):
|
def _visit_constraint(self, constraint):
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
constraint.name = self.get_constraint_name(constraint)
|
||||||
self.append(self.process(DropConstraint(constraint, cascade=constraint.cascade)))
|
self.append(self.process(DropConstraint(constraint, cascade=constraint.cascade)))
|
||||||
self.execute()
|
self.execute()
|
||||||
|
|
||||||
else:
|
|
||||||
class ANSIConstraintGenerator(ANSIConstraintCommon, SchemaGenerator):
|
|
||||||
|
|
||||||
def get_constraint_specification(self, cons, **kwargs):
|
|
||||||
"""Constaint SQL generators.
|
|
||||||
|
|
||||||
We cannot use SA visitors because they append comma.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if isinstance(cons, PrimaryKeyConstraint):
|
|
||||||
if cons.name is not None:
|
|
||||||
self.append("CONSTRAINT %s " % self.preparer.format_constraint(cons))
|
|
||||||
self.append("PRIMARY KEY ")
|
|
||||||
self.append("(%s)" % ', '.join(self.preparer.quote(c.name, c.quote)
|
|
||||||
for c in cons))
|
|
||||||
self.define_constraint_deferrability(cons)
|
|
||||||
elif isinstance(cons, ForeignKeyConstraint):
|
|
||||||
self.define_foreign_key(cons)
|
|
||||||
elif isinstance(cons, CheckConstraint):
|
|
||||||
if cons.name is not None:
|
|
||||||
self.append("CONSTRAINT %s " %
|
|
||||||
self.preparer.format_constraint(cons))
|
|
||||||
self.append("CHECK (%s)" % cons.sqltext)
|
|
||||||
self.define_constraint_deferrability(cons)
|
|
||||||
elif isinstance(cons, UniqueConstraint):
|
|
||||||
if cons.name is not None:
|
|
||||||
self.append("CONSTRAINT %s " %
|
|
||||||
self.preparer.format_constraint(cons))
|
|
||||||
self.append("UNIQUE (%s)" % \
|
|
||||||
(', '.join(self.preparer.quote(c.name, c.quote) for c in cons)))
|
|
||||||
self.define_constraint_deferrability(cons)
|
|
||||||
else:
|
|
||||||
raise exceptions.InvalidConstraintError(cons)
|
|
||||||
|
|
||||||
def _visit_constraint(self, constraint):
|
|
||||||
|
|
||||||
table = self.start_alter_table(constraint)
|
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
|
||||||
self.append("ADD ")
|
|
||||||
self.get_constraint_specification(constraint)
|
|
||||||
self.execute()
|
|
||||||
|
|
||||||
|
|
||||||
class ANSIConstraintDropper(ANSIConstraintCommon, SchemaDropper):
|
|
||||||
|
|
||||||
def _visit_constraint(self, constraint):
|
|
||||||
self.start_alter_table(constraint)
|
|
||||||
self.append("DROP CONSTRAINT ")
|
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
|
||||||
self.append(self.preparer.format_constraint(constraint))
|
|
||||||
if constraint.cascade:
|
|
||||||
self.cascade_constraint(constraint)
|
|
||||||
self.execute()
|
|
||||||
|
|
||||||
def cascade_constraint(self, constraint):
|
|
||||||
self.append(" CASCADE")
|
|
||||||
|
|
||||||
|
|
||||||
class ANSIDialect(DefaultDialect):
|
class ANSIDialect(DefaultDialect):
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
from sqlalchemy import schema
|
from sqlalchemy import schema
|
||||||
|
|
||||||
from migrate.exceptions import *
|
from migrate.exceptions import *
|
||||||
from migrate.changeset import SQLA_06
|
|
||||||
|
|
||||||
class ConstraintChangeset(object):
|
class ConstraintChangeset(object):
|
||||||
"""Base class for Constraint classes."""
|
"""Base class for Constraint classes."""
|
||||||
@ -165,8 +164,6 @@ class CheckConstraint(ConstraintChangeset, schema.CheckConstraint):
|
|||||||
table = kwargs.pop('table', table)
|
table = kwargs.pop('table', table)
|
||||||
schema.CheckConstraint.__init__(self, sqltext, *args, **kwargs)
|
schema.CheckConstraint.__init__(self, sqltext, *args, **kwargs)
|
||||||
if table is not None:
|
if table is not None:
|
||||||
if not SQLA_06:
|
|
||||||
self.table = table
|
|
||||||
self._set_parent(table)
|
self._set_parent(table)
|
||||||
self.colnames = colnames
|
self.colnames = colnames
|
||||||
|
|
||||||
|
@ -4,13 +4,10 @@
|
|||||||
from sqlalchemy.databases import firebird as sa_base
|
from sqlalchemy.databases import firebird as sa_base
|
||||||
from sqlalchemy.schema import PrimaryKeyConstraint
|
from sqlalchemy.schema import PrimaryKeyConstraint
|
||||||
from migrate import exceptions
|
from migrate import exceptions
|
||||||
from migrate.changeset import ansisql, SQLA_06
|
from migrate.changeset import ansisql
|
||||||
|
|
||||||
|
|
||||||
if SQLA_06:
|
FBSchemaGenerator = sa_base.FBDDLCompiler
|
||||||
FBSchemaGenerator = sa_base.FBDDLCompiler
|
|
||||||
else:
|
|
||||||
FBSchemaGenerator = sa_base.FBSchemaGenerator
|
|
||||||
|
|
||||||
class FBColumnGenerator(FBSchemaGenerator, ansisql.ANSIColumnGenerator):
|
class FBColumnGenerator(FBSchemaGenerator, ansisql.ANSIColumnGenerator):
|
||||||
"""Firebird column generator implementation."""
|
"""Firebird column generator implementation."""
|
||||||
@ -41,10 +38,7 @@ class FBColumnDropper(ansisql.ANSIColumnDropper):
|
|||||||
# is deleted!
|
# is deleted!
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if SQLA_06:
|
should_drop = column.name in cons.columns
|
||||||
should_drop = column.name in cons.columns
|
|
||||||
else:
|
|
||||||
should_drop = cons.contains_column(column) and cons.name
|
|
||||||
if should_drop:
|
if should_drop:
|
||||||
self.start_alter_table(column)
|
self.start_alter_table(column)
|
||||||
self.append("DROP CONSTRAINT ")
|
self.append("DROP CONSTRAINT ")
|
||||||
|
@ -6,13 +6,10 @@ from sqlalchemy.databases import mysql as sa_base
|
|||||||
from sqlalchemy import types as sqltypes
|
from sqlalchemy import types as sqltypes
|
||||||
|
|
||||||
from migrate import exceptions
|
from migrate import exceptions
|
||||||
from migrate.changeset import ansisql, SQLA_06
|
from migrate.changeset import ansisql
|
||||||
|
|
||||||
|
|
||||||
if not SQLA_06:
|
MySQLSchemaGenerator = sa_base.MySQLDDLCompiler
|
||||||
MySQLSchemaGenerator = sa_base.MySQLSchemaGenerator
|
|
||||||
else:
|
|
||||||
MySQLSchemaGenerator = sa_base.MySQLDDLCompiler
|
|
||||||
|
|
||||||
class MySQLColumnGenerator(MySQLSchemaGenerator, ansisql.ANSIColumnGenerator):
|
class MySQLColumnGenerator(MySQLSchemaGenerator, ansisql.ANSIColumnGenerator):
|
||||||
pass
|
pass
|
||||||
@ -53,37 +50,11 @@ class MySQLSchemaChanger(MySQLSchemaGenerator, ansisql.ANSISchemaChanger):
|
|||||||
class MySQLConstraintGenerator(ansisql.ANSIConstraintGenerator):
|
class MySQLConstraintGenerator(ansisql.ANSIConstraintGenerator):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if SQLA_06:
|
|
||||||
class MySQLConstraintDropper(MySQLSchemaGenerator, ansisql.ANSIConstraintDropper):
|
|
||||||
def visit_migrate_check_constraint(self, *p, **k):
|
|
||||||
raise exceptions.NotSupportedError("MySQL does not support CHECK"
|
|
||||||
" constraints, use triggers instead.")
|
|
||||||
|
|
||||||
else:
|
class MySQLConstraintDropper(MySQLSchemaGenerator, ansisql.ANSIConstraintDropper):
|
||||||
class MySQLConstraintDropper(ansisql.ANSIConstraintDropper):
|
def visit_migrate_check_constraint(self, *p, **k):
|
||||||
|
raise exceptions.NotSupportedError("MySQL does not support CHECK"
|
||||||
def visit_migrate_primary_key_constraint(self, constraint):
|
" constraints, use triggers instead.")
|
||||||
self.start_alter_table(constraint)
|
|
||||||
self.append("DROP PRIMARY KEY")
|
|
||||||
self.execute()
|
|
||||||
|
|
||||||
def visit_migrate_foreign_key_constraint(self, constraint):
|
|
||||||
self.start_alter_table(constraint)
|
|
||||||
self.append("DROP FOREIGN KEY ")
|
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
|
||||||
self.append(self.preparer.format_constraint(constraint))
|
|
||||||
self.execute()
|
|
||||||
|
|
||||||
def visit_migrate_check_constraint(self, *p, **k):
|
|
||||||
raise exceptions.NotSupportedError("MySQL does not support CHECK"
|
|
||||||
" constraints, use triggers instead.")
|
|
||||||
|
|
||||||
def visit_migrate_unique_constraint(self, constraint, *p, **k):
|
|
||||||
self.start_alter_table(constraint)
|
|
||||||
self.append('DROP INDEX ')
|
|
||||||
constraint.name = self.get_constraint_name(constraint)
|
|
||||||
self.append(self.preparer.format_constraint(constraint))
|
|
||||||
self.execute()
|
|
||||||
|
|
||||||
|
|
||||||
class MySQLDialect(ansisql.ANSIDialect):
|
class MySQLDialect(ansisql.ANSIDialect):
|
||||||
|
@ -5,13 +5,10 @@ import sqlalchemy as sa
|
|||||||
from sqlalchemy.databases import oracle as sa_base
|
from sqlalchemy.databases import oracle as sa_base
|
||||||
|
|
||||||
from migrate import exceptions
|
from migrate import exceptions
|
||||||
from migrate.changeset import ansisql, SQLA_06
|
from migrate.changeset import ansisql
|
||||||
|
|
||||||
|
|
||||||
if not SQLA_06:
|
OracleSchemaGenerator = sa_base.OracleDDLCompiler
|
||||||
OracleSchemaGenerator = sa_base.OracleSchemaGenerator
|
|
||||||
else:
|
|
||||||
OracleSchemaGenerator = sa_base.OracleDDLCompiler
|
|
||||||
|
|
||||||
|
|
||||||
class OracleColumnGenerator(OracleSchemaGenerator, ansisql.ANSIColumnGenerator):
|
class OracleColumnGenerator(OracleSchemaGenerator, ansisql.ANSIColumnGenerator):
|
||||||
|
@ -3,14 +3,10 @@
|
|||||||
|
|
||||||
.. _`PostgreSQL`: http://www.postgresql.org/
|
.. _`PostgreSQL`: http://www.postgresql.org/
|
||||||
"""
|
"""
|
||||||
from migrate.changeset import ansisql, SQLA_06
|
from migrate.changeset import ansisql
|
||||||
|
|
||||||
if not SQLA_06:
|
from sqlalchemy.databases import postgresql as sa_base
|
||||||
from sqlalchemy.databases import postgres as sa_base
|
PGSchemaGenerator = sa_base.PGDDLCompiler
|
||||||
PGSchemaGenerator = sa_base.PGSchemaGenerator
|
|
||||||
else:
|
|
||||||
from sqlalchemy.databases import postgresql as sa_base
|
|
||||||
PGSchemaGenerator = sa_base.PGDDLCompiler
|
|
||||||
|
|
||||||
|
|
||||||
class PGColumnGenerator(PGSchemaGenerator, ansisql.ANSIColumnGenerator):
|
class PGColumnGenerator(PGSchemaGenerator, ansisql.ANSIColumnGenerator):
|
||||||
|
@ -9,13 +9,11 @@ from copy import copy
|
|||||||
from sqlalchemy.databases import sqlite as sa_base
|
from sqlalchemy.databases import sqlite as sa_base
|
||||||
|
|
||||||
from migrate import exceptions
|
from migrate import exceptions
|
||||||
from migrate.changeset import ansisql, SQLA_06
|
from migrate.changeset import ansisql
|
||||||
|
|
||||||
|
|
||||||
if not SQLA_06:
|
SQLiteSchemaGenerator = sa_base.SQLiteDDLCompiler
|
||||||
SQLiteSchemaGenerator = sa_base.SQLiteSchemaGenerator
|
|
||||||
else:
|
|
||||||
SQLiteSchemaGenerator = sa_base.SQLiteDDLCompiler
|
|
||||||
|
|
||||||
class SQLiteCommon(object):
|
class SQLiteCommon(object):
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from sqlalchemy.schema import ForeignKeyConstraint
|
|||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from migrate.exceptions import *
|
from migrate.exceptions import *
|
||||||
from migrate.changeset import SQLA_06, SQLA_07
|
from migrate.changeset import SQLA_07
|
||||||
from migrate.changeset.databases.visitor import (get_engine_visitor,
|
from migrate.changeset.databases.visitor import (get_engine_visitor,
|
||||||
run_single_visitor)
|
run_single_visitor)
|
||||||
|
|
||||||
@ -349,10 +349,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
|
|||||||
def process_column(self, column):
|
def process_column(self, column):
|
||||||
"""Processes default values for column"""
|
"""Processes default values for column"""
|
||||||
# XXX: this is a snippet from SA processing of positional parameters
|
# XXX: this is a snippet from SA processing of positional parameters
|
||||||
if not SQLA_06 and column.args:
|
toinit = list()
|
||||||
toinit = list(column.args)
|
|
||||||
else:
|
|
||||||
toinit = list()
|
|
||||||
|
|
||||||
if column.server_default is not None:
|
if column.server_default is not None:
|
||||||
if isinstance(column.server_default, sqlalchemy.FetchedValue):
|
if isinstance(column.server_default, sqlalchemy.FetchedValue):
|
||||||
@ -367,9 +364,6 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
|
|||||||
for_update=True))
|
for_update=True))
|
||||||
if toinit:
|
if toinit:
|
||||||
column._init_items(*toinit)
|
column._init_items(*toinit)
|
||||||
|
|
||||||
if not SQLA_06:
|
|
||||||
column.args = []
|
|
||||||
|
|
||||||
def _get_table(self):
|
def _get_table(self):
|
||||||
return getattr(self, '_table', None)
|
return getattr(self, '_table', None)
|
||||||
|
@ -337,26 +337,21 @@ class TestAddDropColumn(fixture.DB):
|
|||||||
self.table.create()
|
self.table.create()
|
||||||
|
|
||||||
# paranoid check
|
# paranoid check
|
||||||
if SQLA_06:
|
self.refresh_table()
|
||||||
self.refresh_table()
|
self.assertEqual(
|
||||||
self.assertEqual(
|
sorted([i.name for i in self.table.indexes]),
|
||||||
sorted([i.name for i in self.table.indexes]),
|
[u'ix_tmp_adddropcol_d1', u'ix_tmp_adddropcol_d2']
|
||||||
[u'ix_tmp_adddropcol_d1', u'ix_tmp_adddropcol_d2']
|
)
|
||||||
)
|
|
||||||
|
|
||||||
# delete one
|
# delete one
|
||||||
self.table.c.d2.drop()
|
self.table.c.d2.drop()
|
||||||
|
|
||||||
# ensure the other index is still there
|
# ensure the other index is still there
|
||||||
if SQLA_06:
|
self.refresh_table()
|
||||||
self.refresh_table()
|
self.assertEqual(
|
||||||
self.assertEqual(
|
sorted([i.name for i in self.table.indexes]),
|
||||||
sorted([i.name for i in self.table.indexes]),
|
[u'ix_tmp_adddropcol_d1']
|
||||||
[u'ix_tmp_adddropcol_d1']
|
)
|
||||||
)
|
|
||||||
else:
|
|
||||||
# a crude test for 0.5.x
|
|
||||||
Index('ix_tmp_adddropcol_d1',self.table.c.d1).drop()
|
|
||||||
|
|
||||||
def _actual_foreign_keys(self):
|
def _actual_foreign_keys(self):
|
||||||
from sqlalchemy.schema import ForeignKeyConstraint
|
from sqlalchemy.schema import ForeignKeyConstraint
|
||||||
@ -678,10 +673,7 @@ class TestColumnChange(fixture.DB):
|
|||||||
# server_default isn't necessarily None for Oracle
|
# server_default isn't necessarily None for Oracle
|
||||||
#self.assert_(self.table.c.data.server_default is None,self.table.c.data.server_default)
|
#self.assert_(self.table.c.data.server_default is None,self.table.c.data.server_default)
|
||||||
self.engine.execute(self.table.insert(), id=11)
|
self.engine.execute(self.table.insert(), id=11)
|
||||||
if SQLA_06:
|
row = self.table.select(self.table.c.id == 11).execution_options(autocommit=True).execute().fetchone()
|
||||||
row = self.table.select(self.table.c.id == 11).execution_options(autocommit=True).execute().fetchone()
|
|
||||||
else:
|
|
||||||
row = self.table.select(self.table.c.id == 11, autocommit=True).execute().fetchone()
|
|
||||||
self.assert_(row['data'] is None, row['data'])
|
self.assert_(row['data'] is None, row['data'])
|
||||||
|
|
||||||
@fixture.usedb(not_supported='firebird')
|
@fixture.usedb(not_supported='firebird')
|
||||||
|
@ -211,10 +211,7 @@ class TestAutoname(CommonTestConstraint):
|
|||||||
self.refresh_table()
|
self.refresh_table()
|
||||||
if not self.url.startswith('sqlite'):
|
if not self.url.startswith('sqlite'):
|
||||||
# TODO: test for index for sqlite
|
# TODO: test for index for sqlite
|
||||||
if SQLA_06:
|
self.compare_columns_equal(cons.columns, self.table.primary_key)
|
||||||
self.compare_columns_equal(cons.columns, self.table.primary_key)
|
|
||||||
else:
|
|
||||||
self.compare_columns_equal(cons.columns, self.table.primary_key, ['autoincrement'])
|
|
||||||
cons.name = None
|
cons.name = None
|
||||||
cons.drop()
|
cons.drop()
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ from sqlalchemy import create_engine, Table, MetaData
|
|||||||
from sqlalchemy.orm import create_session
|
from sqlalchemy.orm import create_session
|
||||||
from sqlalchemy.pool import StaticPool
|
from sqlalchemy.pool import StaticPool
|
||||||
|
|
||||||
from migrate.changeset import SQLA_06
|
|
||||||
from migrate.changeset.schema import ColumnDelta
|
from migrate.changeset.schema import ColumnDelta
|
||||||
from migrate.versioning.util import Memoize
|
from migrate.versioning.util import Memoize
|
||||||
|
|
||||||
@ -174,11 +173,8 @@ class DB(Base):
|
|||||||
|
|
||||||
def _select_row(self):
|
def _select_row(self):
|
||||||
"""Select rows, used in multiple tests"""
|
"""Select rows, used in multiple tests"""
|
||||||
if SQLA_06:
|
return self.table.select().execution_options(
|
||||||
row = self.table.select().execution_options(autocommit=True).execute().fetchone()
|
autocommit=True).execute().fetchone()
|
||||||
else:
|
|
||||||
row = self.table.select(autocommit=True).execute().fetchone()
|
|
||||||
return row
|
|
||||||
|
|
||||||
def refresh_table(self, name=None):
|
def refresh_table(self, name=None):
|
||||||
"""Reload the table from the database
|
"""Reload the table from the database
|
||||||
|
@ -7,7 +7,7 @@ from sqlalchemy import *
|
|||||||
from nose.tools import eq_
|
from nose.tools import eq_
|
||||||
|
|
||||||
from migrate.versioning import genmodel, schemadiff
|
from migrate.versioning import genmodel, schemadiff
|
||||||
from migrate.changeset import schema, SQLA_06
|
from migrate.changeset import schema
|
||||||
|
|
||||||
from migrate.tests import fixture
|
from migrate.tests import fixture
|
||||||
|
|
||||||
@ -103,10 +103,7 @@ class TestSchemaDiff(fixture.DB):
|
|||||||
if not self.engine.name == 'oracle':
|
if not self.engine.name == 'oracle':
|
||||||
# Add data, later we'll make sure it's still present.
|
# Add data, later we'll make sure it's still present.
|
||||||
result = self.engine.execute(self.table.insert(), id=1, name=u'mydata')
|
result = self.engine.execute(self.table.insert(), id=1, name=u'mydata')
|
||||||
if SQLA_06:
|
dataId = result.inserted_primary_key[0]
|
||||||
dataId = result.inserted_primary_key[0]
|
|
||||||
else:
|
|
||||||
dataId = result.last_inserted_ids()[0]
|
|
||||||
|
|
||||||
# Modify table in model (by removing it and adding it back to model)
|
# Modify table in model (by removing it and adding it back to model)
|
||||||
# Drop column data, add columns data2 and data3.
|
# Drop column data, add columns data2 and data3.
|
||||||
@ -162,10 +159,7 @@ class TestSchemaDiff(fixture.DB):
|
|||||||
|
|
||||||
# Add data, later we'll make sure it's still present.
|
# Add data, later we'll make sure it's still present.
|
||||||
result = self.engine.execute(self.table.insert(), id=2, name=u'mydata2', data2=123)
|
result = self.engine.execute(self.table.insert(), id=2, name=u'mydata2', data2=123)
|
||||||
if SQLA_06:
|
dataId2 = result.inserted_primary_key[0]
|
||||||
dataId2 = result.inserted_primary_key[0]
|
|
||||||
else:
|
|
||||||
dataId2 = result.last_inserted_ids()[0]
|
|
||||||
|
|
||||||
# Change column type in model.
|
# Change column type in model.
|
||||||
self.meta.remove(self.table)
|
self.meta.remove(self.table)
|
||||||
|
@ -6,7 +6,6 @@ from sqlalchemy import *
|
|||||||
from nose.tools import eq_
|
from nose.tools import eq_
|
||||||
|
|
||||||
from migrate.versioning import schemadiff
|
from migrate.versioning import schemadiff
|
||||||
from migrate.changeset import SQLA_06
|
|
||||||
|
|
||||||
from migrate.tests import fixture
|
from migrate.tests import fixture
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user