diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 68ba132..ed2f267 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -77,6 +77,15 @@ class Database: self.conn.execute(sql) return self[name] + def create_view(self, name, sql): + self.conn.execute( + """ + CREATE VIEW {name} AS {sql} + """.format( + name=name, sql=sql + ) + ) + class Table: def __init__(self, db, name): diff --git a/tests/test_create.py b/tests/test_create.py index 966602b..3a38284 100644 --- a/tests/test_create.py +++ b/tests/test_create.py @@ -133,3 +133,10 @@ def test_insert_dictionaries_and_lists_as_json(fresh_db, data_structure): row = fresh_db.conn.execute("select id, data from test").fetchone() assert row[0] == 1 assert data_structure == json.loads(row[1]) + + +def test_create_view(fresh_db): + fresh_db["data"].insert({"foo": "foo", "bar": "bar"}) + fresh_db.create_view("bar", "select bar from data") + rows = fresh_db.conn.execute("select * from bar").fetchall() + assert [("bar",)] == rows