diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2019-01-15 17:47:14 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2019-01-15 17:47:14 +0000 |
| commit | e1b299df819bc1a48ed565bd6efa8ee406ea7efa (patch) | |
| tree | f9008532688f8f312f4995af4c6601ea3b6d0d37 /lib/sqlalchemy/dialects/mssql/base.py | |
| parent | 885f15a306efc4c907ca82fa13871992ee556466 (diff) | |
| parent | c0e6ebd70b04c7941b7750c77cd4329b043679f8 (diff) | |
| download | sqlalchemy-e1b299df819bc1a48ed565bd6efa8ee406ea7efa.tar.gz | |
Merge "Render N'' for SQL Server unicode literals"
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql/base.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 2ad88e8b0..32e3372c0 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -996,12 +996,26 @@ class DATETIMEOFFSET(sqltypes.TypeEngine): self.precision = precision -class _StringType(object): +class _UnicodeLiteral(object): + def literal_processor(self, dialect): + def process(value): + + value = value.replace("'", "''") + + if dialect.identifier_preparer._double_percents: + value = value.replace("%", "%%") + + return "N'%s'" % value + + return process + - """Base for MSSQL string types.""" +class _MSUnicode(_UnicodeLiteral, sqltypes.Unicode): + pass - def __init__(self, collation=None): - super(_StringType, self).__init__(collation=collation) + +class _MSUnicodeText(_UnicodeLiteral, sqltypes.UnicodeText): + pass class TIMESTAMP(sqltypes._Binary): @@ -2117,6 +2131,8 @@ class MSDialect(default.DefaultDialect): sqltypes.DateTime: _MSDateTime, sqltypes.Date: _MSDate, sqltypes.Time: TIME, + sqltypes.Unicode: _MSUnicode, + sqltypes.UnicodeText: _MSUnicodeText, } engine_config_types = default.DefaultDialect.engine_config_types.union( |
