diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql/base.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 09db05e1f..8292d08f1 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -216,6 +216,7 @@ RESERVED_WORDS = set( 'writetext', ]) + class REAL(sqltypes.REAL): __visit_name__ = 'REAL' @@ -224,6 +225,7 @@ class REAL(sqltypes.REAL): kw['precision'] = 24 super(REAL, self).__init__(**kw) + class TINYINT(sqltypes.Integer): __visit_name__ = 'TINYINT' @@ -256,6 +258,7 @@ class _MSDate(sqltypes.Date): return value return process + class TIME(sqltypes.TIME): def __init__(self, precision=None, **kwargs): self.precision = precision @@ -287,6 +290,7 @@ class TIME(sqltypes.TIME): return process _MSTime = TIME + class _DateTimeBase(object): def bind_processor(self, dialect): def process(value): @@ -296,12 +300,15 @@ class _DateTimeBase(object): return value return process + class _MSDateTime(_DateTimeBase, sqltypes.DateTime): pass + class SMALLDATETIME(_DateTimeBase, sqltypes.DateTime): __visit_name__ = 'SMALLDATETIME' + class DATETIME2(_DateTimeBase, sqltypes.DateTime): __visit_name__ = 'DATETIME2' @@ -317,12 +324,14 @@ class DATETIMEOFFSET(sqltypes.TypeEngine): def __init__(self, precision=None, **kwargs): self.precision = precision + class _StringType(object): """Base for MSSQL string types.""" def __init__(self, collation=None): self.collation = collation + class TEXT(_StringType, sqltypes.TEXT): """MSSQL TEXT type, for variable-length text up to 2^31 characters.""" @@ -336,6 +345,7 @@ class TEXT(_StringType, sqltypes.TEXT): _StringType.__init__(self, collation) sqltypes.Text.__init__(self, length, **kw) + class NTEXT(_StringType, sqltypes.UnicodeText): """MSSQL NTEXT type, for variable-length unicode text up to 2^30 characters.""" @@ -381,6 +391,7 @@ class VARCHAR(_StringType, sqltypes.VARCHAR): _StringType.__init__(self, collation) sqltypes.VARCHAR.__init__(self, length, **kw) + class NVARCHAR(_StringType, sqltypes.NVARCHAR): """MSSQL NVARCHAR type. @@ -398,6 +409,7 @@ class NVARCHAR(_StringType, sqltypes.NVARCHAR): _StringType.__init__(self, collation) sqltypes.NVARCHAR.__init__(self, length, **kw) + class CHAR(_StringType, sqltypes.CHAR): """MSSQL CHAR type, for fixed-length non-Unicode data with a maximum of 8,000 characters.""" @@ -426,6 +438,7 @@ class CHAR(_StringType, sqltypes.CHAR): _StringType.__init__(self, collation) sqltypes.CHAR.__init__(self, length, **kw) + class NCHAR(_StringType, sqltypes.NCHAR): """MSSQL NCHAR type. @@ -443,9 +456,11 @@ class NCHAR(_StringType, sqltypes.NCHAR): _StringType.__init__(self, collation) sqltypes.NCHAR.__init__(self, length, **kw) + class IMAGE(sqltypes.LargeBinary): __visit_name__ = 'IMAGE' + class BIT(sqltypes.TypeEngine): __visit_name__ = 'BIT' @@ -453,12 +468,15 @@ class BIT(sqltypes.TypeEngine): class MONEY(sqltypes.TypeEngine): __visit_name__ = 'MONEY' + class SMALLMONEY(sqltypes.TypeEngine): __visit_name__ = 'SMALLMONEY' + class UNIQUEIDENTIFIER(sqltypes.TypeEngine): __visit_name__ = "UNIQUEIDENTIFIER" + class SQL_VARIANT(sqltypes.TypeEngine): __visit_name__ = 'SQL_VARIANT' @@ -641,6 +659,7 @@ class MSTypeCompiler(compiler.GenericTypeCompiler): def visit_SQL_VARIANT(self, type_): return 'SQL_VARIANT' + class MSExecutionContext(default.DefaultExecutionContext): _enable_identity_insert = False _select_lastrowid = False @@ -718,6 +737,7 @@ class MSExecutionContext(default.DefaultExecutionContext): else: return engine.ResultProxy(self) + class MSSQLCompiler(compiler.SQLCompiler): returning_precedes_values = True @@ -947,6 +967,7 @@ class MSSQLCompiler(compiler.SQLCompiler): fromhints=from_hints, **kw) for t in [from_table] + extra_froms) + class MSSQLStrictCompiler(MSSQLCompiler): """A subclass of MSSQLCompiler which disables the usage of bind parameters where not allowed natively by MS-SQL. @@ -990,6 +1011,7 @@ class MSSQLStrictCompiler(MSSQLCompiler): return super(MSSQLStrictCompiler, self).\ render_literal_value(value, type_) + class MSDDLCompiler(compiler.DDLCompiler): def get_column_specification(self, column, **kwargs): colspec = (self.preparer.format_column(column) + " " @@ -1049,6 +1071,7 @@ class MSIdentifierPreparer(compiler.IdentifierPreparer): result = '.'.join([self.quote(x, force) for x in schema.split('.')]) return result + def _db_plus_owner_listing(fn): def wrap(dialect, connection, schema=None, **kw): dbname, owner = _owner_plus_db(dialect, schema) @@ -1056,6 +1079,7 @@ def _db_plus_owner_listing(fn): dbname, owner, schema, **kw) return update_wrapper(wrap, fn) + def _db_plus_owner(fn): def wrap(dialect, connection, tablename, schema=None, **kw): dbname, owner = _owner_plus_db(dialect, schema) @@ -1063,6 +1087,7 @@ def _db_plus_owner(fn): tablename, dbname, owner, schema, **kw) return update_wrapper(wrap, fn) + def _switch_db(dbname, connection, fn, *arg, **kw): if dbname: current_db = connection.scalar("select db_name()") @@ -1073,6 +1098,7 @@ def _switch_db(dbname, connection, fn, *arg, **kw): if dbname: connection.execute("use %s" % current_db) + def _owner_plus_db(dialect, schema): if not schema: return None, dialect.default_schema_name @@ -1081,6 +1107,7 @@ def _owner_plus_db(dialect, schema): else: return None, schema + class MSDialect(default.DefaultDialect): name = 'mssql' supports_default_values = True |
