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"
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
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)
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)]
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
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)]
def add_queries_from_str(self, qs: str): """Load queries from a string.""" self._create_fns(sql.from_str(qs, self._db))