diff options
author | Rick Morrison <rickmorrison@gmail.com> | 2007-02-06 20:04:09 +0000 |
---|---|---|
committer | Rick Morrison <rickmorrison@gmail.com> | 2007-02-06 20:04:09 +0000 |
commit | 6fac73b6998c5ebf4e8aa76194fff19273ea4c9d (patch) | |
tree | 017ae98c775f8f359887594c24b4fa58f370b5b1 /lib/sqlalchemy/databases/mssql.py | |
parent | bbea2acf4282c4524a2b455b3f1a09c7fffc4af4 (diff) | |
download | sqlalchemy-6fac73b6998c5ebf4e8aa76194fff19273ea4c9d.tar.gz |
ticket 298 plus transaction fixes for pymssql
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index fbb89de1a..04b949d6a 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -146,13 +146,28 @@ class MSText(sqltypes.TEXT): class MSString(sqltypes.String): def get_col_spec(self): return "VARCHAR(%(length)s)" % {'length' : self.length} + + class MSNVarchar(MSString): """NVARCHAR string, does unicode conversion if dialect.convert_encoding is true""" + impl = sqltypes.Unicode def get_col_spec(self): return "NVARCHAR(%(length)s)" % {'length' : self.length} + if dbmodule and dbmodule.__name__ == 'adodbapi': + def convert_bind_param(self, value, dialect): + return value + def convert_result_value(self, value, dialect): + return value + class MSUnicode(sqltypes.Unicode): """Unicode subclass, does unicode conversion in all cases, uses NVARCHAR impl""" impl = MSNVarchar + if dbmodule and dbmodule.__name__ == 'adodbapi': + def convert_bind_param(self, value, dialect): + return value + def convert_result_value(self, value, dialect): + return value + class MSChar(sqltypes.CHAR): def get_col_spec(self): return "CHAR(%(length)s)" % {'length' : self.length} @@ -264,10 +279,10 @@ class MSSQLExecutionContext(default.DefaultExecutionContext): class MSSQLDialect(ansisql.ANSIDialect): - def __init__(self, module=None, auto_identity_insert=False, **params): + def __init__(self, module=None, auto_identity_insert=False, encoding=None, **params): self.module = module or dbmodule self.auto_identity_insert = auto_identity_insert - ansisql.ANSIDialect.__init__(self, **params) + ansisql.ANSIDialect.__init__(self, encoding=encoding, **params) self.set_default_schema_name("dbo") def create_connect_args(self, url): @@ -468,8 +483,7 @@ class MSSQLDialect(ansisql.ANSIDialect): class PyMSSQLDialect(MSSQLDialect): def do_begin(self, connection): """implementations might want to put logic here for turning autocommit on/off, etc.""" - if do_commit: - pass + pass def do_rollback(self, connection): """implementations might want to put logic here for turning autocommit on/off, etc.""" @@ -497,7 +511,6 @@ class PyMSSQLDialect(MSSQLDialect): r.query("begin tran") r.fetch_array() - class MSSQLCompiler(ansisql.ANSICompiler): def __init__(self, dialect, statement, parameters, **kwargs): super(MSSQLCompiler, self).__init__(dialect, statement, parameters, **kwargs) @@ -544,7 +557,6 @@ class MSSQLCompiler(ansisql.ANSICompiler): self.strings[column] = \ self.strings[self.tablealiases[column.table].corresponding_column(column)] - class MSSQLSchemaGenerator(ansisql.ANSISchemaGenerator): def get_column_specification(self, column, **kwargs): colspec = self.preparer.format_column(column) + " " + column.type.engine_impl(self.engine).get_col_spec() |