diff options
| author | Rick Morrison <rickmorrison@gmail.com> | 2006-09-27 00:01:16 +0000 |
|---|---|---|
| committer | Rick Morrison <rickmorrison@gmail.com> | 2006-09-27 00:01:16 +0000 |
| commit | b4112538dbd46ee7d3c25fc35f3c43aed342e429 (patch) | |
| tree | 7f5adc02628725362d176f4eb72d9e6ec24f301d | |
| parent | 3db04a868c770a8549a885d500594b29bb2e013e (diff) | |
| download | sqlalchemy-b4112538dbd46ee7d3c25fc35f3c43aed342e429.tar.gz | |
NCHAR and NVARCHAR support for MS-SQL. Patch from Kent Johnson
| -rw-r--r-- | CHANGES | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 14 | ||||
| -rw-r--r-- | lib/sqlalchemy/types.py | 3 |
3 files changed, 15 insertions, 3 deletions
@@ -15,6 +15,7 @@ to orm to allow tracking of mapper configurations, row iteration. -- introduces new "auto_identity_insert" option for auto-switching between "SET IDENTITY_INSERT" mode when values specified for IDENTITY columns -- now supports multi-column foreign keys -- fix to reflecting date/datetime columns + -- NCHAR and NVARCHAR type support added - more rearrangements of unit-of-work commit scheme to better allow dependencies within circular flushes to work properly...updated task traversal/logging implementation diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 1274174f0..0a6dfbe1f 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -148,9 +148,15 @@ class MSText(sqltypes.TEXT): class MSString(sqltypes.String): def get_col_spec(self): return "VARCHAR(%(length)s)" % {'length' : self.length} +class MSUnicode(sqltypes.Unicode): + def get_col_spec(self): + return "NVARCHAR(%(length)s)" % {'length' : self.length} class MSChar(sqltypes.CHAR): def get_col_spec(self): return "CHAR(%(length)s)" % {'length' : self.length} +class MSNChar(sqltypes.NCHAR): + def get_col_spec(self): + return "NCHAR(%(length)s)" % {'length' : self.length} class MSBinary(sqltypes.Binary): def get_col_spec(self): return "IMAGE" @@ -179,10 +185,12 @@ colspecs = { sqltypes.DateTime : MSDateTime, sqltypes.Date : MSDate, sqltypes.String : MSString, + sqltypes.Unicode : MSUnicode, sqltypes.Binary : MSBinary, sqltypes.Boolean : MSBoolean, sqltypes.TEXT : MSText, sqltypes.CHAR: MSChar, + sqltypes.NCHAR: MSNChar, } ischema_names = { @@ -190,7 +198,9 @@ ischema_names = { 'smallint' : MSSmallInteger, 'tinyint' : MSTinyInteger, 'varchar' : MSString, + 'nvarchar' : MSUnicode, 'char' : MSChar, + 'nchar' : MSNChar, 'text' : MSText, 'decimal' : MSNumeric, 'numeric' : MSNumeric, @@ -237,8 +247,8 @@ class MSSQLExecutionContext(default.DefaultExecutionContext): break if self.IINSERT: proxy("SET IDENTITY_INSERT %s ON" % compiled.statement.table.name) - super(MSSQLExecutionContext, self).pre_exec(engine, proxy, compiled, parameters, **kwargs) - + super(MSSQLExecutionContext, self).pre_exec(engine, proxy, compiled, parameters, **kwargs) + def post_exec(self, engine, proxy, compiled, parameters, **kwargs): """ Turn off the INDENTITY_INSERT mode if it's been activated, and fetch recently inserted IDENTIFY values (works only for one column) """ if getattr(compiled, "isinsert", False): diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index 6f4892530..31c6a232e 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -5,7 +5,7 @@ # the MIT License: http://www.opensource.org/licenses/mit-license.php __all__ = [ 'TypeEngine', 'TypeDecorator', 'NullTypeEngine', - 'INT', 'CHAR', 'VARCHAR', 'TEXT', 'FLOAT', 'DECIMAL', + 'INT', 'CHAR', 'VARCHAR', 'NCHAR', 'TEXT', 'FLOAT', 'DECIMAL', 'TIMESTAMP', 'DATETIME', 'CLOB', 'BLOB', 'BOOLEAN', 'String', 'Integer', 'Smallinteger', 'Numeric', 'Float', 'DateTime', 'Date', 'Time', 'Binary', 'Boolean', 'Unicode', 'PickleType', 'NULLTYPE', 'SMALLINT', 'DATE', 'TIME' @@ -270,6 +270,7 @@ class TIME(Time): pass class CLOB(String): pass class VARCHAR(String): pass class CHAR(String):pass +class NCHAR(Unicode):pass class BLOB(Binary): pass class BOOLEAN(Boolean): pass |
