summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-08-24 21:20:15 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-08-24 21:20:15 +0000
commit32ada5fd98d8545586a95f36efa421629cd36020 (patch)
treebb329cb2c6806c15383da090cc59aede738097d2
parent52641d5fb25e522b9982485f703023f7ee1421ea (diff)
downloadsqlalchemy-32ada5fd98d8545586a95f36efa421629cd36020.tar.gz
- Added MSMediumInteger type [ticket:1146].
-rw-r--r--CHANGES3
-rw-r--r--lib/sqlalchemy/databases/mysql.py31
-rw-r--r--test/dialect/mysql.py15
3 files changed, 47 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index acba941d8..4daadf7db 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,9 @@ CHANGES
- Fixed bug regarding inherit_condition passed
with "A=B" versus "B=A" leading to errors
[ticket:1039]
+
+- mysql
+ - Added MSMediumInteger type [ticket:1146].
0.4.7p1
=====
diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py
index 3e718655a..9697bcae9 100644
--- a/lib/sqlalchemy/databases/mysql.py
+++ b/lib/sqlalchemy/databases/mysql.py
@@ -166,7 +166,7 @@ from sqlalchemy import types as sqltypes
__all__ = (
- 'MSBigInteger', 'MSBinary', 'MSBit', 'MSBlob', 'MSBoolean',
+ 'MSBigInteger', 'MSMediumInteger', 'MSBinary', 'MSBit', 'MSBlob', 'MSBoolean',
'MSChar', 'MSDate', 'MSDateTime', 'MSDecimal', 'MSDouble',
'MSEnum', 'MSFloat', 'MSInteger', 'MSLongBlob', 'MSLongText',
'MSMediumBlob', 'MSMediumText', 'MSNChar', 'MSNVarChar',
@@ -548,6 +548,33 @@ class MSBigInteger(MSInteger):
else:
return self._extend("BIGINT")
+class MSMediumInteger(MSInteger):
+ """MySQL MEDIUMINTEGER type."""
+
+ def __init__(self, length=None, **kw):
+ """Construct a MEDIUMINTEGER
+
+ length
+ Optional, maximum display width for this number.
+
+ unsigned
+ Optional.
+
+ zerofill
+ Optional. If true, values will be stored as strings left-padded with
+ zeros. Note that this does not effect the values returned by the
+ underlying database API, which continue to be numeric.
+ """
+
+ super(MSMediumInteger, self).__init__(length, **kw)
+
+ def get_col_spec(self):
+ if self.length is not None:
+ return self._extend("MEDIUMINT(%(length)s)" % {'length': self.length})
+ else:
+ return self._extend("MEDIUMINT")
+
+
class MSTinyInteger(MSInteger):
"""MySQL TINYINT type."""
@@ -1363,7 +1390,7 @@ ischema_names = {
'longblob': MSLongBlob,
'longtext': MSLongText,
'mediumblob': MSMediumBlob,
- 'mediumint': MSInteger,
+ 'mediumint': MSMediumInteger,
'mediumtext': MSMediumText,
'nchar': MSNChar,
'nvarchar': MSNVarChar,
diff --git a/test/dialect/mysql.py b/test/dialect/mysql.py
index 6cdc284c9..86ccd0da2 100644
--- a/test/dialect/mysql.py
+++ b/test/dialect/mysql.py
@@ -23,6 +23,7 @@ class TypesTest(TestBase, AssertsExecutionResults):
Column('num3', mysql.MSBigInteger()),
Column('num4', mysql.MSDouble),
Column('num5', mysql.MSDouble()),
+ Column('num6', mysql.MSMediumInteger),
Column('enum1', mysql.MSEnum("'black'", "'white'")),
)
try:
@@ -38,6 +39,7 @@ class TypesTest(TestBase, AssertsExecutionResults):
assert isinstance(t2.c.num3.type, mysql.MSBigInteger)
assert isinstance(t2.c.num4.type, mysql.MSDouble)
assert isinstance(t2.c.num5.type, mysql.MSDouble)
+ assert isinstance(t2.c.num6.type, mysql.MSMediumInteger)
assert isinstance(t2.c.enum1.type, mysql.MSEnum)
t2.drop()
t2.create()
@@ -133,6 +135,17 @@ class TypesTest(TestBase, AssertsExecutionResults):
(mysql.MSBigInteger, [4], {'zerofill':True, 'unsigned':True},
'BIGINT(4) UNSIGNED ZEROFILL'),
+ (mysql.MSMediumInteger, [], {},
+ 'MEDIUMINT'),
+ (mysql.MSMediumInteger, [4], {},
+ 'MEDIUMINT(4)'),
+ (mysql.MSMediumInteger, [4], {'unsigned':True},
+ 'MEDIUMINT(4) UNSIGNED'),
+ (mysql.MSMediumInteger, [4], {'zerofill':True},
+ 'MEDIUMINT(4) ZEROFILL'),
+ (mysql.MSMediumInteger, [4], {'zerofill':True, 'unsigned':True},
+ 'MEDIUMINT(4) UNSIGNED ZEROFILL'),
+
(mysql.MSTinyInteger, [], {},
'TINYINT'),
(mysql.MSTinyInteger, [1], {},
@@ -645,6 +658,8 @@ class TypesTest(TestBase, AssertsExecutionResults):
( SmallInteger(4), mysql.MSSmallInteger(4), ),
( mysql.MSSmallInteger(), ),
( mysql.MSSmallInteger(4), mysql.MSSmallInteger(4), ),
+ ( mysql.MSMediumInteger(), mysql.MSMediumInteger(), ),
+ ( mysql.MSMediumInteger(8), mysql.MSMediumInteger(8), ),
( Binary(3), mysql.MSBlob(3), ),
( Binary(), mysql.MSBlob() ),
( mysql.MSBinary(3), mysql.MSBinary(3), ),