From: Rick Morrison Date: Fri, 23 Jan 2009 00:53:32 +0000 (+0000) Subject: mssql: modified table reflection code to use only kwargs when constructing coldefs. X-Git-Tag: rel_0_5_2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0caf97126394f059d94bffb5c2fdf49c4680cba1;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git mssql: modified table reflection code to use only kwargs when constructing coldefs. --- diff --git a/CHANGES b/CHANGES index 865e884889..dc931ad478 100644 --- a/CHANGES +++ b/CHANGES @@ -46,6 +46,9 @@ CHANGES - Really fixing the decimal handling this time. [ticket:1282]. + - Modified table reflection code to use only kwargs when + constructing tables. [Ticket:1289] + 0.5.1 ======== diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index ddd1306794..ae36125130 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -1148,32 +1148,28 @@ class MSSQLDialect(default.DefaultDialect): if include_columns and name not in include_columns: continue - args = [] - for a in (charlen, numericprec, numericscale): - if a is not None: - args.append(a) coltype = self.ischema_names.get(type, None) kwargs = {} if coltype in (MSString, MSChar, MSNVarchar, MSNChar, MSText, MSNText): + kwargs['length'] = charlen if collation: - kwargs.update(collation=collation) + kwargs['collation'] = collation + if coltype == MSText or (coltype in (MSString, MSNVarchar) and charlen == -1): + kwargs.pop('length') - if coltype == MSText or (coltype == MSString and charlen == -1): - coltype = MSText(**kwargs) - else: - if coltype is None: - util.warn("Did not recognize type '%s' of column '%s'" % - (type, name)) - coltype = sqltypes.NULLTYPE - - elif coltype in (MSNVarchar,) and charlen == -1: - args[0] = None - coltype = coltype(*args, **kwargs) + if coltype in (MSNumeric,): # TODO: include MSMoney? + kwargs['scale'] = numericscale + kwargs['precision'] = numericprec + + if coltype is None: + util.warn("Did not recognize type '%s' of column '%s'" % (type, name)) + coltype = sqltypes.NULLTYPE + + coltype = coltype(**kwargs) colargs = [] if default is not None: colargs.append(schema.DefaultClause(sql.text(default))) - table.append_column(schema.Column(name, coltype, nullable=nullable, autoincrement=False, *colargs)) if not found_table: