diff options
author | Robert Leftwich <rtl@pobox.com> | 2005-12-01 12:51:38 +0000 |
---|---|---|
committer | Robert Leftwich <rtl@pobox.com> | 2005-12-01 12:51:38 +0000 |
commit | 9ec6a9b8e336caf6ef79451f1154f40fc5e771a1 (patch) | |
tree | 8302755a21f48ae8af5845c281b21a8d95b79a46 /lib/sqlalchemy | |
parent | 2a1098f831a0f9b3f9a01fa5cd2a46789b533a61 (diff) | |
download | sqlalchemy-9ec6a9b8e336caf6ef79451f1154f40fc5e771a1.tar.gz |
Added float type to support real/double precision/float8/etc sql data types. Added columns.py as unit test. Modified sqlite.py, postgres.py and mysql.py to use the new type where appropriate (note -Oracle is unchanged at present).
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r-- | lib/sqlalchemy/databases/mysql.py | 5 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 9 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/sqlite.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/types.py | 12 |
4 files changed, 25 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py index 45d85187a..429ffc0fd 100644 --- a/lib/sqlalchemy/databases/mysql.py +++ b/lib/sqlalchemy/databases/mysql.py @@ -33,6 +33,9 @@ except: class MSNumeric(sqltypes.Numeric): def get_col_spec(self): return "NUMERIC(%(precision)s, %(length)s)" % {'precision': self.precision, 'length' : self.length} +class MSFloat(sqltypes.Float): + def get_col_spec(self): + return "FLOAT(%(precision)s)" % {'precision': self.precision} class MSInteger(sqltypes.Integer): def get_col_spec(self): return "INTEGER" @@ -58,6 +61,7 @@ class MSBoolean(sqltypes.Boolean): colspecs = { sqltypes.Integer : MSInteger, sqltypes.Numeric : MSNumeric, + sqltypes.Float : MSFloat, sqltypes.DateTime : MSDateTime, sqltypes.String : MSString, sqltypes.Binary : MSBinary, @@ -72,6 +76,7 @@ ischema_names = { 'char' : MSChar, 'text' : MSText, 'decimal' : MSNumeric, + 'float' : MSFloat, 'timestamp' : MSDateTime, 'binary' : MSBinary, } diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index c8e742fe4..75b9e1aee 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -36,6 +36,9 @@ except: class PGNumeric(sqltypes.Numeric): def get_col_spec(self): return "NUMERIC(%(precision)s, %(length)s)" % {'precision': self.precision, 'length' : self.length} +class PGFloat(sqltypes.Float): + def get_col_spec(self): + return "FLOAT(%(precision)s)" % {'precision': self.precision} class PGInteger(sqltypes.Integer): def get_col_spec(self): return "INTEGER" @@ -70,6 +73,7 @@ class PGBoolean(sqltypes.Boolean): pg2_colspecs = { sqltypes.Integer : PGInteger, sqltypes.Numeric : PGNumeric, + sqltypes.Float : PGFloat, sqltypes.DateTime : PG2DateTime, sqltypes.String : PGString, sqltypes.Binary : PGBinary, @@ -82,12 +86,17 @@ pg1_colspecs[sqltypes.DateTime] = PG1DateTime pg2_ischema_names = { 'integer' : PGInteger, + 'bigint' : PGInteger, 'character varying' : PGString, 'character' : PGChar, 'text' : PGText, 'numeric' : PGNumeric, + 'float' : PGFloat, + 'real' : PGFloat, + 'double precision' : PGFloat, 'timestamp without time zone' : PG2DateTime, 'bytea' : PGBinary, + 'boolean' : PGBoolean, } pg1_ischema_names = pg2_ischema_names.copy() pg1_ischema_names['timestamp without time zone'] = PG1DateTime diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 1a00c555b..845efdf33 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -68,6 +68,7 @@ class SLBoolean(sqltypes.Boolean): colspecs = { sqltypes.Integer : SLInteger, sqltypes.Numeric : SLNumeric, + sqltypes.Float : SLNumeric, sqltypes.DateTime : SLDateTime, sqltypes.String : SLString, sqltypes.Binary : SLBinary, @@ -82,6 +83,7 @@ pragma_names = { 'CHAR' : SLChar, 'TEXT' : SLText, 'NUMERIC' : SLNumeric, + 'FLOAT' : SLNumeric, 'TIMESTAMP' : SLDateTime, 'BLOB' : SLBinary, } diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index fc29f8056..520e379a2 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -17,7 +17,7 @@ __all__ = [ 'TypeEngine', 'TypeDecorator', 'NullTypeEngine', 'INT', 'CHAR', 'VARCHAR', 'TEXT', 'FLOAT', 'DECIMAL', - 'TIMESTAMP', 'DATETIME', 'CLOB', 'BLOB', 'BOOLEAN', 'String', 'Integer', 'Numeric', 'DateTime', 'Binary', 'Boolean', 'NULLTYPE' + 'TIMESTAMP', 'DATETIME', 'CLOB', 'BLOB', 'BOOLEAN', 'String', 'Integer', 'Numeric', 'Float', 'DateTime', 'Binary', 'Boolean', 'NULLTYPE' ] @@ -89,6 +89,12 @@ class Numeric(NullTypeEngine): def adapt(self, typeobj): return typeobj(self.precision, self.length) +class Float(NullTypeEngine): + def __init__(self, precision = 10): + self.precision = precision + def adapt(self, typeobj): + return typeobj(self.precision) + class DateTime(NullTypeEngine): pass @@ -98,7 +104,7 @@ class Binary(NullTypeEngine): class Boolean(NullTypeEngine): pass -class FLOAT(Numeric):pass +class FLOAT(Float):pass class TEXT(String):pass class DECIMAL(Numeric):pass class INT(Integer):pass @@ -111,4 +117,4 @@ class CHAR(String):pass class BLOB(Binary): pass class BOOLEAN(Boolean): pass -NULLTYPE = NullTypeEngine()
\ No newline at end of file +NULLTYPE = NullTypeEngine() |