From: Mike Bayer Date: Sun, 24 Aug 2008 21:20:15 +0000 (+0000) Subject: - Added MSMediumInteger type [ticket:1146]. X-Git-Tag: rel_0_4_8~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=32ada5fd98d8545586a95f36efa421629cd36020;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Added MSMediumInteger type [ticket:1146]. --- diff --git a/CHANGES b/CHANGES index acba941d80..4daadf7db9 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 3e718655ad..9697bcae9e 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 6cdc284c9c..86ccd0da28 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), ),