summaryrefslogtreecommitdiff
path: root/migrate/changeset/databases/visitor.py
blob: 437dc6805ca11243f24269ba2d9d087e770787be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sqlalchemy as sa
from migrate.changeset.databases import sqlite,postgres,mysql,oracle
from migrate.changeset import ansisql

# Map SA dialects to the corresponding Migrate extensions
dialects = {
    sa.engine.default.DefaultDialect : ansisql.ANSIDialect,
    sa.databases.sqlite.SQLiteDialect : sqlite.SQLiteDialect,
    sa.databases.postgres.PGDialect : postgres.PGDialect,
    sa.databases.mysql.MySQLDialect : mysql.MySQLDialect,
    sa.databases.oracle.OracleDialect : oracle.OracleDialect,
}

def get_engine_visitor(engine,name):
    return get_dialect_visitor(engine.dialect,name)

def get_dialect_visitor(sa_dialect,name):
    sa_dialect_cls = sa_dialect.__class__
    migrate_dialect_cls = dialects[sa_dialect_cls]
    return migrate_dialect_cls.visitor(name)