mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
parent
9e094b7c9d
commit
2e4ba71b53
4 changed files with 18 additions and 43 deletions
|
|
@ -95,7 +95,10 @@ class Database:
|
|||
)
|
||||
|
||||
async def execute_write(self, sql, params=None, executescript=False, block=False):
|
||||
assert not (executescript and params), "Cannot use params with executescript=True"
|
||||
assert not (
|
||||
executescript and params
|
||||
), "Cannot use params with executescript=True"
|
||||
|
||||
def _inner(conn):
|
||||
with conn:
|
||||
if executescript:
|
||||
|
|
|
|||
|
|
@ -2,22 +2,14 @@ import textwrap
|
|||
|
||||
|
||||
async def init_internal_db(db):
|
||||
await db.execute_write(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
create_tables_sql = textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS databases (
|
||||
database_name TEXT PRIMARY KEY,
|
||||
path TEXT,
|
||||
is_memory INTEGER,
|
||||
schema_version INTEGER
|
||||
)
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS tables (
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
|
|
@ -25,14 +17,7 @@ async def init_internal_db(db):
|
|||
sql TEXT,
|
||||
PRIMARY KEY (database_name, table_name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name)
|
||||
)
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS columns (
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
|
|
@ -46,14 +31,7 @@ async def init_internal_db(db):
|
|||
PRIMARY KEY (database_name, table_name, name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS indexes (
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
|
|
@ -65,14 +43,7 @@ async def init_internal_db(db):
|
|||
PRIMARY KEY (database_name, table_name, name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
textwrap.dedent(
|
||||
"""
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS foreign_keys (
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
|
|
@ -87,11 +58,10 @@ async def init_internal_db(db):
|
|||
PRIMARY KEY (database_name, table_name, id, seq),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
);
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
).strip()
|
||||
await db.execute_write(create_tables_sql, block=True, executescript=True)
|
||||
|
||||
|
||||
async def populate_schema_tables(internal_db, db):
|
||||
|
|
|
|||
|
|
@ -950,7 +950,9 @@ def test_trace(trace_debug):
|
|||
"select ",
|
||||
)
|
||||
for prefix in expected:
|
||||
assert any(sql.startswith(prefix) for sql in sqls)
|
||||
assert any(
|
||||
sql.startswith(prefix) for sql in sqls
|
||||
), "No trace beginning with: {}".format(prefix)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ async def test_execute_write_executescript(db):
|
|||
await db.execute_write(
|
||||
"create table foo (id integer primary key); create table bar (id integer primary key); ",
|
||||
executescript=True,
|
||||
block=True
|
||||
block=True,
|
||||
)
|
||||
table_names = await db.table_names()
|
||||
assert {"foo", "bar"}.issubset(table_names)
|
||||
|
|
@ -413,7 +413,7 @@ async def test_execute_write_executescript_not_allowed_with_params(db):
|
|||
await db.execute_write(
|
||||
"update roadside_attractions set name = ? where pk = ?",
|
||||
["Mystery!", 1],
|
||||
executescript=True
|
||||
executescript=True,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue