summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/mssql.py
diff options
context:
space:
mode:
authorRick Morrison <rickmorrison@gmail.com>2007-02-06 20:04:09 +0000
committerRick Morrison <rickmorrison@gmail.com>2007-02-06 20:04:09 +0000
commit6fac73b6998c5ebf4e8aa76194fff19273ea4c9d (patch)
tree017ae98c775f8f359887594c24b4fa58f370b5b1 /lib/sqlalchemy/databases/mssql.py
parentbbea2acf4282c4524a2b455b3f1a09c7fffc4af4 (diff)
downloadsqlalchemy-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.py24
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()