mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Improvements + docs for db.execute() and Results class
* Including new results.first() and results.single_value() methods. Closes #685
This commit is contained in:
parent
69e3a855dd
commit
4433306c18
8 changed files with 141 additions and 29 deletions
|
|
@ -1,9 +1,47 @@
|
|||
from datasette.database import Results, MultipleValues
|
||||
from datasette.utils import sqlite3
|
||||
from .fixtures import app_client
|
||||
import pytest
|
||||
import time
|
||||
import uuid
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_execute1(app_client):
|
||||
db = app_client.ds.databases["fixtures"]
|
||||
results = await db.execute("select * from facetable")
|
||||
assert isinstance(results, Results)
|
||||
assert 15 == len(results)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_results_first(app_client):
|
||||
db = app_client.ds.databases["fixtures"]
|
||||
assert None is (await db.execute("select * from facetable where pk > 100")).first()
|
||||
results = await db.execute("select * from facetable")
|
||||
row = results.first()
|
||||
assert isinstance(row, sqlite3.Row)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"query,expected",
|
||||
[
|
||||
("select 1", 1),
|
||||
("select 1, 2", None),
|
||||
("select 1 as num union select 2 as num", None),
|
||||
],
|
||||
)
|
||||
@pytest.mark.asyncio
|
||||
async def test_results_single_value(app_client, query, expected):
|
||||
db = app_client.ds.databases["fixtures"]
|
||||
results = await db.execute(query)
|
||||
if expected:
|
||||
assert expected == results.single_value()
|
||||
else:
|
||||
with pytest.raises(MultipleValues):
|
||||
results.single_value()
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"tables,exists",
|
||||
(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue