diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 9e08df8..2548396 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -1177,7 +1177,9 @@ class Database: assert not ( ignore and replace ), "Use one or the other of ignore/replace, not both" - create_sql = "CREATE VIEW {name} AS {sql}".format(name=name, sql=sql) + create_sql = "CREATE VIEW {name} AS {sql}".format( + name=quote_identifier(name), sql=sql + ) if ignore or replace: # Does view exist already? if name in self.view_names(): diff --git a/tests/test_cli.py b/tests/test_cli.py index 793c52c..bcf3e98 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -62,8 +62,8 @@ def test_views(db_path): result = CliRunner().invoke(cli.cli, ["views", db_path, "--table", "--schema"]) assert ( "view schema\n" - "------ --------------------------------------------\n" - "hello CREATE VIEW hello AS select sqlite_version()" + "------ ----------------------------------------------\n" + 'hello CREATE VIEW "hello" AS select sqlite_version()' ) == result.output.strip() @@ -1294,7 +1294,9 @@ def test_create_view(): cli.cli, ["create-view", "test.db", "version", "select sqlite_version()"] ) assert result.exit_code == 0 - assert "CREATE VIEW version AS select sqlite_version()" == db["version"].schema + assert ( + 'CREATE VIEW "version" AS select sqlite_version()' == db["version"].schema + ) def test_create_view_error_if_view_exists(): @@ -1329,7 +1331,8 @@ def test_create_view_ignore(): ) assert result.exit_code == 0 assert ( - "CREATE VIEW version AS select sqlite_version() + 1" == db["version"].schema + 'CREATE VIEW "version" AS select sqlite_version() + 1' + == db["version"].schema ) @@ -1349,7 +1352,9 @@ def test_create_view_replace(): ], ) assert result.exit_code == 0 - assert "CREATE VIEW version AS select sqlite_version()" == db["version"].schema + assert ( + 'CREATE VIEW "version" AS select sqlite_version()' == db["version"].schema + ) def test_drop_table(): diff --git a/tests/test_cli_memory.py b/tests/test_cli_memory.py index 2715acf..572a13e 100644 --- a/tests/test_cli_memory.py +++ b/tests/test_cli_memory.py @@ -172,8 +172,8 @@ def test_memory_dump(extra_args): ");\n" "INSERT INTO \"stdin\" VALUES(1,'Cleo');\n" "INSERT INTO \"stdin\" VALUES(2,'Bants');\n" - 'CREATE VIEW t1 AS select * from "stdin";\n' - 'CREATE VIEW t AS select * from "stdin";\n' + 'CREATE VIEW "t1" AS select * from "stdin";\n' + 'CREATE VIEW "t" AS select * from "stdin";\n' "COMMIT;" ) # Using sqlite-dump it won't have IF NOT EXISTS @@ -194,8 +194,8 @@ def test_memory_schema(extra_args): ' "id" INTEGER,\n' ' "name" TEXT\n' ");\n" - 'CREATE VIEW t1 AS select * from "stdin";\n' - 'CREATE VIEW t AS select * from "stdin";' + 'CREATE VIEW "t1" AS select * from "stdin";\n' + 'CREATE VIEW "t" AS select * from "stdin";' ) @@ -288,13 +288,13 @@ def test_memory_two_files_with_same_stem(tmpdir): ' "id" INTEGER,\n' ' "name" TEXT\n' ");\n" - 'CREATE VIEW t1 AS select * from "data";\n' - 'CREATE VIEW t AS select * from "data";\n' + 'CREATE VIEW "t1" AS select * from "data";\n' + 'CREATE VIEW "t" AS select * from "data";\n' 'CREATE TABLE "data_2" (\n' ' "id" INTEGER,\n' ' "name" TEXT\n' ");\n" - 'CREATE VIEW t2 AS select * from "data_2";\n' + 'CREATE VIEW "t2" AS select * from "data_2";\n' )