Avoid SQLite RETURNING for compat with older SQLite

Refs #2789
This commit is contained in:
Simon Willison 2026-06-22 14:24:34 -07:00
commit f831352551

View file

@ -1,6 +1,6 @@
from datasette.app import Datasette
from datasette.events import RenameTableEvent
from datasette.utils import sqlite3
from datasette.utils import escape_sqlite, sqlite3
from .utils import last_event
import pytest
import time
@ -40,6 +40,16 @@ def _headers(token):
}
def _insert_and_fetch_created(conn, table, insert_sql):
cursor = conn.execute(insert_sql)
return conn.execute(
"select created, typeof(created) from {} where rowid = ?".format(
escape_sqlite(table)
),
(cursor.lastrowid,),
).fetchone()
@pytest.mark.asyncio
async def test_api_explorer_upsert_example_json(ds_write):
response = await ds_write.client.get("/-/api", actor={"id": "root"})
@ -948,10 +958,9 @@ async def test_alter_table_integer_default_expr(
assert expected_schema in created_column["dflt_value"]
row = await db.execute_write_fn(
lambda conn: conn.execute(
"insert into docs (title) values ('with default') "
"returning created, typeof(created)"
).fetchone()
lambda conn: _insert_and_fetch_created(
conn, "docs", "insert into docs (title) values ('with default')"
)
)
assert row[0] > minimum_value
assert row[1] == "integer"
@ -2158,11 +2167,9 @@ async def test_create_table_integer_default_expr(
assert expected_schema in columns[1]["dflt_value"]
row = await db.execute_write_fn(
lambda conn: conn.execute(
"insert into [{}] default values returning created, typeof(created)".format(
table
)
).fetchone()
lambda conn: _insert_and_fetch_created(
conn, table, "insert into {} default values".format(escape_sqlite(table))
)
)
assert row[0] > minimum_value
assert row[1] == "integer"