Exemplo n.º 1
0
    def test_reflection_on_include_columns(self):
        """Test reflection of include_columns to be sure they respect case."""

        case_table = Table(
            "mysql_case",
            MetaData(testing.db),
            Column("c1", String(10)),
            Column("C2", String(10)),
            Column("C3", String(10)),
        )

        try:
            case_table.create()
            reflected = Table(
                "mysql_case",
                MetaData(testing.db),
                autoload=True,
                include_columns=["c1", "C2"],
            )
            for t in case_table, reflected:
                assert "c1" in t.c.keys()
                assert "C2" in t.c.keys()
            reflected2 = Table(
                "mysql_case",
                MetaData(testing.db),
                autoload=True,
                include_columns=["c1", "c2"],
            )
            assert "c1" in reflected2.c.keys()
            for c in ["c2", "C2", "C3"]:
                assert c not in reflected2.c.keys()
        finally:
            case_table.drop()
Exemplo n.º 2
0
    def test_reflection_with_table_options(self):
        comment = r"""Comment types type speedily ' " \ '' Fun!"""

        def_table = Table(
            "mysql_def",
            MetaData(testing.db),
            Column("c1", Integer()),
            mysql_engine="MEMORY",
            comment=comment,
            mysql_default_charset="utf8",
            mysql_auto_increment="5",
            mysql_avg_row_length="3",
            mysql_password="******",
            mysql_connection="fish",
        )

        def_table.create()
        try:
            reflected = Table("mysql_def", MetaData(testing.db), autoload=True)
        finally:
            def_table.drop()

        assert def_table.kwargs["mysql_engine"] == "MEMORY"
        assert def_table.comment == comment
        assert def_table.kwargs["mysql_default_charset"] == "utf8"
        assert def_table.kwargs["mysql_auto_increment"] == "5"
        assert def_table.kwargs["mysql_avg_row_length"] == "3"
        assert def_table.kwargs["mysql_password"] == "secret"
        assert def_table.kwargs["mysql_connection"] == "fish"

        assert reflected.kwargs["mysql_engine"] == "MEMORY"

        assert reflected.comment == comment
        assert reflected.kwargs["mysql_comment"] == comment
        assert reflected.kwargs["mysql_default charset"] == "utf8"
        assert reflected.kwargs["mysql_avg_row_length"] == "3"
        assert reflected.kwargs["mysql_connection"] == "fish"
Exemplo n.º 3
0
    def test_default_reflection(self):
        """Test reflection of column defaults."""

        from sqlalchemy_1_3.dialects.mysql import VARCHAR

        def_table = Table(
            "mysql_def",
            MetaData(testing.db),
            Column(
                "c1",
                VARCHAR(10, collation="utf8_unicode_ci"),
                DefaultClause(""),
                nullable=False,
            ),
            Column("c2", String(10), DefaultClause("0")),
            Column("c3", String(10), DefaultClause("abc")),
            Column("c4", TIMESTAMP, DefaultClause("2009-04-05 12:00:00")),
            Column("c5", TIMESTAMP),
            Column(
                "c6",
                TIMESTAMP,
                DefaultClause(
                    sql.text("CURRENT_TIMESTAMP "
                             "ON UPDATE CURRENT_TIMESTAMP")),
            ),
        )
        def_table.create()
        try:
            reflected = Table("mysql_def", MetaData(testing.db), autoload=True)
        finally:
            def_table.drop()
        assert def_table.c.c1.server_default.arg == ""
        assert def_table.c.c2.server_default.arg == "0"
        assert def_table.c.c3.server_default.arg == "abc"
        assert def_table.c.c4.server_default.arg == "2009-04-05 12:00:00"
        assert str(reflected.c.c1.server_default.arg) == "''"
        assert str(reflected.c.c2.server_default.arg) == "'0'"
        assert str(reflected.c.c3.server_default.arg) == "'abc'"
        assert (str(
            reflected.c.c4.server_default.arg) == "'2009-04-05 12:00:00'")
        assert reflected.c.c5.default is None
        assert reflected.c.c5.server_default is None
        assert reflected.c.c6.default is None
        assert re.match(
            r"CURRENT_TIMESTAMP(\(\))? ON UPDATE CURRENT_TIMESTAMP(\(\))?",
            str(reflected.c.c6.server_default.arg).upper(),
        )
        reflected.create()
        try:
            reflected2 = Table("mysql_def",
                               MetaData(testing.db),
                               autoload=True)
        finally:
            reflected.drop()
        assert str(reflected2.c.c1.server_default.arg) == "''"
        assert str(reflected2.c.c2.server_default.arg) == "'0'"
        assert str(reflected2.c.c3.server_default.arg) == "'abc'"
        assert (str(
            reflected2.c.c4.server_default.arg) == "'2009-04-05 12:00:00'")
        assert reflected.c.c5.default is None
        assert reflected.c.c5.server_default is None
        assert reflected.c.c6.default is None
        assert re.match(
            r"CURRENT_TIMESTAMP(\(\))? ON UPDATE CURRENT_TIMESTAMP(\(\))?",
            str(reflected.c.c6.server_default.arg).upper(),
        )