Ejemplo n.º 1
0
    def test_NUMERIC(self):
        for mysqltype in ("DECIMAL", "NUMERIC"):
            col = Column.match("`colname` {} UNSIGNED,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'NUMERIC')
            self.assertIsNone(col.collen)
            self.assertIsNotNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC')

            col = Column.match("`colname` {}(4,12) ZEROFILL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'NUMERIC')
            self.assertEqual(col.collen, [4, 12])
            self.assertIsNone(col.unsigned)
            self.assertIsNotNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC')

            col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'NUMERIC')
            self.assertEqual(col.collen, [4, 12])
            self.assertIsNotNone(col.unsigned)
            self.assertIsNotNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" NUMERIC')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" NUMERIC')
Ejemplo n.º 2
0
    def test_DOUBLE(self):
        col = Column.match("`colname` DOUBLE UNSIGNED,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'DOUBLE')
        self.assertIsNone(col.collen)
        self.assertIsNotNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE')

        col = Column.match("`colname` DOUBLE(4,12) ZEROFILL,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'DOUBLE')
        self.assertEqual(col.collen, [4, 12])
        self.assertIsNone(col.unsigned)
        self.assertIsNotNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE')

        col = Column.match("`colname` DOUBLE(4,12) UNSIGNED ZEROFILL,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'DOUBLE')
        self.assertEqual(col.collen, [4, 12])
        self.assertIsNotNone(col.unsigned)
        self.assertIsNotNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" DOUBLE')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" DOUBLE')
Ejemplo n.º 3
0
    def test_BINARY(self):
        for mysqltype in (
                        "BINARY", "VARBINARY",
                        "TINYBLOB", "BLOB", "MEDIUMBLOB", "LONGBLOB",
                        "TINYTEXT BINARY", "TEXT BINARY", "MEDIUMTEXT BINARY", "LONGTEXT BINARY"
                        ):
            line = "`colname` {},".format(mysqltype)
            col = Column.match(line)
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'BLOB', line)
            self.assertIsNone(col.collen)
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertIsNone(col.autoincrement)
            self.assertIsNone(col.charset)
            self.assertIsNone(col.collate)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB')

            col = Column.match("`colname` {} NOT NULL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'BLOB')
            self.assertIsNone(col.collen)
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertEqual(col.notnull, "NOT NULL")
            self.assertIsNone(col.autoincrement)
            self.assertIsNone(col.charset)
            self.assertIsNone(col.collate)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB NOT NULL')

            col = Column.match("`colname` {} CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'BLOB')
            self.assertIsNone(col.collen)
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertEqual(col.notnull, "NOT NULL")
            self.assertIsNone(col.autoincrement)
            self.assertEqual(col.charset, "utf8")
            self.assertEqual(col.collate, "utf8_unicode_ci")
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" BLOB')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" BLOB NOT NULL')
Ejemplo n.º 4
0
 def test_YEAR(self):
     col = Column.match("`colname` YEAR,")
     self.assertEqual(col.colname, 'colname')
     self.assertEqual(col.coltype, 'INTEGER')
     self.assertIsNone(col.collen)
     self.assertIsNone(col.unsigned)
     self.assertIsNone(col.zerofill)
     self.assertIsNone(col.notnull)
     self.assertIsNone(col.autoincrement)
     self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
     self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')
Ejemplo n.º 5
0
    def test_REAL(self):
        for mysqltype in ("REAL", "FLOAT"):
            col = Column.match("`colname` {} UNSIGNED,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'REAL')
            self.assertIsNone(col.collen)
            self.assertIsNotNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL')

            col = Column.match("`colname` {}(4,12) ZEROFILL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'REAL')
            self.assertEqual(col.collen, [4, 12])
            self.assertIsNone(col.unsigned)
            self.assertIsNotNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL')

            col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL DEFAULT '13.14',".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'REAL')
            self.assertEqual(col.collen, [4, 12])
            self.assertIsNotNone(col.unsigned)
            self.assertIsNotNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL DEFAULT 13.14')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL DEFAULT 13.14')

            col = Column.match("`colname` {}( 4, 12 ) UNSIGNED ZEROFILL NOT null,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'REAL')
            self.assertEqual(col.collen, [4, 12])
            self.assertIsNotNone(col.unsigned)
            self.assertIsNotNone(col.zerofill)
            self.assertEqual(col.notnull, "NOT null")
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" REAL')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" REAL NOT NULL')
Ejemplo n.º 6
0
 def test_SET(self):
     col = Column.match("`colname` SET('small', 'medium', 'large') NOT NULL,")
     self.assertEqual(col.colname, 'colname')
     self.assertEqual(col.coltype, 'TEXT')
     self.assertEqual(col.originaltype, 'SET')
     self.assertEqual(col.collen, ["'small'", "'medium'", "'large'"])
     self.assertIsNone(col.unsigned)
     self.assertIsNone(col.zerofill)
     self.assertIsNotNone(col.notnull)
     self.assertIsNone(col.autoincrement)
     self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT')
     self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL')
Ejemplo n.º 7
0
    def test_CHAR(self):
        for mysqltype in ("CHAR", "VARCHAR", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT"):
            col = Column.match("`colname` {},".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'TEXT')
            self.assertIsNone(col.collen)
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertIsNone(col.notnull)
            self.assertIsNone(col.autoincrement)
            self.assertIsNone(col.charset)
            self.assertIsNone(col.collate)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT')

            col = Column.match("`colname` {}(4) NOT NULL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'TEXT')
            self.assertEqual(col.collen, [4])
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertEqual(col.notnull, "NOT NULL")
            self.assertIsNone(col.autoincrement)
            self.assertIsNone(col.charset)
            self.assertIsNone(col.collate)
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL')

            col = Column.match("`colname` {}(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,".format(mysqltype))
            self.assertEqual(col.colname, 'colname')
            self.assertEqual(col.coltype, 'TEXT')
            self.assertEqual(col.collen, [4])
            self.assertIsNone(col.unsigned)
            self.assertIsNone(col.zerofill)
            self.assertEqual(col.notnull, "NOT NULL")
            self.assertIsNone(col.autoincrement)
            self.assertEqual(col.charset, "utf8")
            self.assertEqual(col.collate, "utf8_unicode_ci")
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" TEXT')
            self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" TEXT NOT NULL')
Ejemplo n.º 8
0
    def test_BIT(self):
        col = Column.match("`colname` BIT,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')

        col = Column.match("`colname` BIT(4) NOT NULL,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertEqual(col.collen, [4])
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertEqual(col.notnull, "NOT NULL")
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL')
Ejemplo n.º 9
0
    def test_INT(self):
        col = Column.match("`colname` INTEGER,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertIsNone(col.key)
        self.assertIsNone(col.comment)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')

        line = "`colname` INTEGER DEFAULT '1' COMMENT 'a string' COLUMN_FORMAT FIXED,"
        col = Column.match(line)
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertIsNone(col.key)
        self.assertEqual(col.comment, "'a string'", line)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER DEFAULT 1')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER DEFAULT 1')

        col = Column.match("`colname` INTEGER UNIQUE,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.key, "UNIQUE")
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER UNIQUE')

        col = Column.match("`colname` INTEGER UNIQUE KEY,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.key, "UNIQUE KEY")
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER UNIQUE')

        col = Column.match("`colname` INTEGER PRIMARY KEY,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.key, "PRIMARY KEY")
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER PRIMARY KEY')

        col = Column.match("`colname` INTEGER NOT NULL AUTO_INCREMENT,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNotNone(col.notnull)
        self.assertIsNotNone(col.autoincrement)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER AUTOINCREMENT')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL AUTOINCREMENT')

        col = Column.match("`colname` INTEGER NOT NULL DEFAULT '13',")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertIsNone(col.collen)
        self.assertIsNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNotNone(col.notnull)
        self.assertIsNone(col.autoincrement)
        self.assertEqual(col.default, 13)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER DEFAULT 13')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER NOT NULL DEFAULT 13')

        col = Column.match("`colname` TINYINT UNSIGNED,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'SMALLINT')
        self.assertIsNone(col.collen)
        self.assertIsNotNone(col.unsigned)
        self.assertIsNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" SMALLINT')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" SMALLINT')

        col = Column.match("`colname` TINYINT(4) ZEROFILL,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'SMALLINT')
        self.assertEqual(col.collen, [4])
        self.assertIsNone(col.unsigned)
        self.assertIsNotNone(col.zerofill)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" SMALLINT')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" SMALLINT')
        self.assertIsNone(col.notnull)

        col = Column.match("`colname` INT(4) UNSIGNED ZEROFILL,")
        self.assertEqual(col.colname, 'colname')
        self.assertEqual(col.coltype, 'INTEGER')
        self.assertEqual(col.collen, [4])
        self.assertIsNotNone(col.unsigned)
        self.assertIsNotNone(col.zerofill)
        self.assertIsNone(col.notnull)
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=True), '"colname" INTEGER')
        self.assertEqual(col.sql(flavor="sqlite", skip_constraints=False), '"colname" INTEGER')