예제 #1
0
def test_without_trailing_semi_colon_pg():
    """Make sure keywords ending queries are recognized even without
    semi-colons.
    """
    _queries = ("-- name: get-by-a\n" "SELECT a, b, c FROM foo WHERE a = :a\n")
    q = anosql.from_str(_queries, "psycopg2")
    assert q.get_by_a.sql == "SELECT a, b, c FROM foo WHERE a = %(a)s"
예제 #2
0
파일: test_simple.py 프로젝트: zx80/anosql
def test_one_row(sqlite):
    _test_one_row = ("-- name: one-row?\n"
                     "SELECT 1, 'hello';\n\n"
                     "-- name: two-rows?\n"
                     "SELECT 1 UNION SELECT 2;\n")
    q = anosql.from_str(_test_one_row, "sqlite3")
    assert q.one_row(sqlite) == (1, 'hello')
    assert q.two_rows(sqlite) is None
예제 #3
0
def test_simple_query(sqlite):
    _test_create_insert = ("-- name: create-some-table#\n"
                           "-- testing insertion\n"
                           "CREATE TABLE foo (a, b, c);\n\n"
                           "-- name: insert-some-value!\n"
                           "INSERT INTO foo (a, b, c) VALUES (1, 2, 3);\n")

    q = anosql.from_str(_test_create_insert, "sqlite3")
    q.create_some_table(sqlite)
    q.insert_some_value(sqlite)
예제 #4
0
def test_parametrized_insert_named(sqlite):
    _test_create_insert = ("-- name: create-some-table#\n"
                           "-- testing insertion\n"
                           "CREATE TABLE foo (a, b, c);\n\n"
                           "-- name: insert-some-value!\n"
                           "INSERT INTO foo (a, b, c) VALUES (:a, :b, :c);\n\n"
                           "-- name: get-all-values\n"
                           "SELECT * FROM foo;\n")

    q = anosql.from_str(_test_create_insert, "sqlite3")
    q.create_some_table(sqlite)
    q.insert_some_value(sqlite, c=12, b=11, a=10)
    assert q.get_all_values(sqlite) == [(10, 11, 12)]
예제 #5
0
def test_auto_insert_query_pg(postgresql):
    _queries = (
        "-- name: create-some-table#\n"
        "-- testing insertion\n"
        "CREATE TABLE foo (id serial primary key, a int, b int, c int);\n\n"
        "-- name: insert-some-value<!\n"
        "INSERT INTO foo (a, b, c) VALUES (1, 2, 3) returning id;\n\n"
        "-- name: get-all-values\n"
        "SELECT a, b, c FROM foo;\n")

    q = anosql.from_str(_queries, "psycopg2")

    q.create_some_table(postgresql)

    assert q.insert_some_value(postgresql) == 1
    assert q.insert_some_value(postgresql) == 2
예제 #6
0
def test_parameterized_select_named_pg(postgresql):
    _queries = (
        "-- name: create-some-table#\n"
        "-- testing insertion\n"
        "CREATE TABLE foo (id serial primary key, a int, b int, c int);\n\n"
        "-- name: insert-some-value!\n"
        "INSERT INTO foo (a, b, c) VALUES (1, 2, 3)\n\n"
        "-- name: get-all-values\n"
        "SELECT a, b, c FROM foo WHERE a = %(a)s;\n")

    q = anosql.from_str(_queries, "psycopg2")

    q.create_some_table(postgresql)
    q.insert_some_value(postgresql)

    assert q.get_all_values(postgresql, a=1) == [(1, 2, 3)]
예제 #7
0
 def add_queries_from_str(self, qs: str):
     """Load queries from a string."""
     self._create_fns(sql.from_str(qs, self._db))