diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql/base.py')
-rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 4a7e48ab8..e66d01a35 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -1156,7 +1156,7 @@ RESERVED_WORDS = { class REAL(sqltypes.REAL): - __visit_name__ = "REAL" + """the SQL Server REAL datatype.""" def __init__(self, **kw): # REAL is a synonym for FLOAT(24) on SQL server. @@ -1166,6 +1166,21 @@ class REAL(sqltypes.REAL): super().__init__(**kw) +class DOUBLE_PRECISION(sqltypes.DOUBLE_PRECISION): + """the SQL Server DOUBLE PRECISION datatype. + + .. versionadded:: 2.0.11 + + """ + + def __init__(self, **kw): + # DOUBLE PRECISION is a synonym for FLOAT(53) on SQL server. + # it is only accepted as the word "DOUBLE PRECISION" in DDL, + # the numeric precision value is not allowed to be present + kw.setdefault("precision", 53) + super().__init__(**kw) + + class TINYINT(sqltypes.Integer): __visit_name__ = "TINYINT" @@ -1670,6 +1685,7 @@ ischema_names = { "varbinary": VARBINARY, "bit": BIT, "real": REAL, + "double precision": DOUBLE_PRECISION, "image": IMAGE, "xml": XML, "timestamp": TIMESTAMP, @@ -1700,6 +1716,9 @@ class MSTypeCompiler(compiler.GenericTypeCompiler): return " ".join([c for c in (spec, collation) if c is not None]) + def visit_double(self, type_, **kw): + return self.visit_DOUBLE_PRECISION(type_, **kw) + def visit_FLOAT(self, type_, **kw): precision = getattr(type_, "precision", None) if precision is None: |