示例#1
0
def test_insert(engine):
    statement = s.Insert(
        c.InsertInto(e.Identifier('person')),
        c.Columns(m.List(e.Identifier('person_id'), e.Identifier('name'))),
        c.Values(m.List('mosky', 'Mosky Liu')),
    )
    assert statement.__sql__(engine) == Sql(
        """INSERT INTO "person" ("person_id", "name") """
        """VALUES ('mosky', 'Mosky Liu')"""
    )
示例#2
0
def test_insert_values_multiple(engine):
    statement = s.Insert(
        c.InsertInto(e.Identifier('person')),
        c.Values(
            m.List('mosky', 'Mosky Liu'),
            m.List('yiyu', 'Yi-Yu Liu'),
        ),
    )
    assert statement.__sql__(engine) == Sql(
        'INSERT INTO "person" '
        "VALUES ('mosky', 'Mosky Liu'), ('yiyu', 'Yi-Yu Liu')"
    )
示例#3
0
def test_insert_no_values(engine):
    statement = s.Insert(
        c.InsertInto(e.Identifier('person')),
        c.Values(m.List()),
    )
    assert statement.__sql__(engine) == Sql('''
        INSERT INTO "person" VALUES ()
    '''.strip())
示例#4
0
def test_select_join_right_using(engine):
    statement = s.Select(
        c.Select(n.star),
        c.From(m.Join(
            e.Identifier('person'), 'RIGHT', e.Identifier('detail'),
            c.Using(m.List(e.Identifier('person_id'))),
        )),
    )
    assert statement.__sql__(engine) == Sql('''
        SELECT * FROM "person" RIGHT JOIN "detail" USING ("person_id")
    '''.strip())
示例#5
0
def test_select_where_in(engine):
    statement = s.Select(
        c.Select(n.star),
        c.From(e.Identifier('person')),
        c.Where(e.In(
            e.Identifier('person_id'),
            m.List('andy', 'bob'),
        )),
    )
    assert statement.__sql__(engine) == Sql('''
        SELECT * FROM "person" WHERE "person_id" IN ('andy', 'bob')
    '''.strip())
示例#6
0
def test_select_where_subquery_as(engine):
    sql = s.Select(
        c.Select(
            e.Identifier('t', n.star),
            m.As(e.Add(e.Identifier('a'), e.Identifier('b')),
                 e.Identifier('total')),
        ),
        c.From(
            m.As(
                m.List(
                    s.Select(
                        c.Select(
                            m.As(f.Sum(e.Identifier('c1')), e.Identifier('a')),
                            m.As(f.Sum(e.Identifier('c2')), e.Identifier('b')),
                        ),
                        c.From(e.Identifier('table')),
                    ), ), e.Identifier('t'))),
    )
    assert sql.__sql__(engine) == Sql(
        'SELECT "t".*, "a" + "b" AS "total" FROM ('
        'SELECT SUM("c1") AS "a", SUM("c2") AS "b" FROM "table"'
        ') AS "t"')
示例#7
0
def test_list_mixed(engine):
    sql = m.List(e.Identifier('name'), n.star, 'Mosky')
    assert sql.__sql__(engine) == Sql('''
        ("name", *, 'Mosky')
    '''.strip())
示例#8
0
def test_list_identifier(engine):
    sql = m.List(e.Identifier('name'), e.Identifier('age'))
    assert sql.__sql__(engine) == Sql('("name", "age")')
示例#9
0
def test_list(engine):
    sql = m.List('Mosky', 'TP')
    assert sql.__sql__(engine) == Sql("('Mosky', 'TP')")
示例#10
0
def test_values_list(engine):
    sql = c.Values(m.List('Mosky', 42, e.Identifier('person', 'name')))
    assert sql.__sql__(engine) == Sql('''
        VALUES ('Mosky', 42, "person"."name")
    '''.strip())