예제 #1
0
    def test__create_statement(self):
        table = MySQLTable(name="my_table")
        table.columns.append(
            MySQLColumn(
                name="id", data_type="integer", length=11, attributes=["NOT NULL", "AUTO_INCREMENT"], table=table
            )
        )
        table.columns.append(
            MySQLColumn(name="name", data_type="varchar", length=255, attributes=["DEFAULT NULL"], table=table)
        )
        table.columns.append(MySQLColumn(name="description", data_type="blob", table=table))
        table.columns.append(MySQLColumn(name="group_id", data_type="integer", length=11, table=table))

        expect = """\
CREATE TABLE `my_table` (
  `id` integer(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `description` blob,
  `group_id` integer(11),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;"""

        expect_drop = """\
DROP TABLE IF EXISTS `my_table`;
CREATE TABLE `my_table` (
  `id` integer(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `description` blob,
  `group_id` integer(11),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;"""
        self.assertEqual(table.create_statement(), expect)
        self.assertEqual(table.create_statement(drop=True), expect_drop)
예제 #2
0
    def __init__(self, name, column_names, data):
        """Constructor

        """
        self.name = name
        self.column_names = column_names
        self.data = data
        self.columns = []
        MySQLTable.__init__(self, name)
예제 #3
0
    def test__insert_statement(self):
        table = MySQLTable(name="my_table")
        data = [(None, 1, "a"), (None, 2, "b"), (None, 3, "c")]

        expect = """\
INSERT INTO `my_table` VALUES
(NULL, 1, 'a'),
(NULL, 2, 'b'),
(NULL, 3, 'c')
;"""

        expect_lock = """\
LOCK TABLE `my_table` WRITE;
INSERT INTO `my_table` VALUES
(NULL, 1, 'a'),
(NULL, 2, 'b'),
(NULL, 3, 'c')
;
UNLOCK TABLES;"""

        self.assertEqual(table.insert_statement(data), expect)
        self.assertEqual(table.insert_statement(data, lock=True), expect_lock)
        return
예제 #4
0
    def test__documentation(self):
        # W0511 Used when a warning note as FIXME or XXX is detected.
        # pylint: disable=W0511

        table = MySQLTable(name="my_table")
        expect = """my_table
"""
        self.assertEqual(table.documentation(), expect)

        table.columns.append(MySQLColumn(name="id", data_type="integer", table=table))
        table.columns.append(MySQLColumn(name="name", data_type="varchar(255)", table=table))
        table.columns.append(MySQLColumn(name="description", data_type="blob", table=table))
        table.columns.append(MySQLColumn(name="group_id", data_type="integer", table=table))
        expect = """my_table

name         varchar(255)  # FIXME
description  blob          # FIXME
group_id     integer       # FIXME"""

        # 234567890123456789012345678901234567890

        self.assertEqual(table.documentation(), expect)
        return