Skip to content

Commit 20247b5

Browse files
committed
change result
1 parent ee26552 commit 20247b5

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

docs/components/results.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ Currently there are two results:
1414
### Result
1515

1616
#### Parameters
17+
1718
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
18-
- `as_tuple`: return result as a tuple instead of dict.
19+
- `as_tuple`: Headless tuple output
1920

2021
Get the result as a list of dicts
2122

@@ -32,14 +33,15 @@ async def main() -> None:
3233
list_dict_result: List[Dict[str, Any]] = query_result.result()
3334

3435
# Result as tuple
35-
list_tuple_result: List[Tuple[Tuple[str, typing.Any], ...]] = query_result.result(
36+
list_tuple_result: List[Tuple[str, typing.Any], ...] = query_result.result(
3637
as_tuple=True,
3738
)
3839
```
3940

4041
### As class
4142

4243
#### Parameters
44+
4345
- `as_class`: Custom class from Python.
4446
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
4547

@@ -68,6 +70,7 @@ async def main() -> None:
6870
### Row Factory
6971

7072
#### Parameters
73+
7174
- `row_factory`: custom callable object.
7275
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
7376

@@ -78,8 +81,9 @@ async def main() -> None:
7881
### Result
7982

8083
#### Parameters
84+
8185
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
82-
- `as_tuple`: return result as a tuple instead of dict.
86+
- `as_tuple`: Headless tuple output
8387

8488
Get the result as a dict
8589

@@ -96,14 +100,15 @@ async def main() -> None:
96100
dict_result: Dict[str, Any] = query_result.result()
97101

98102
# Result as tuple
99-
tuple_result: Tuple[Tuple[str, typing.Any], ...] = query_result.result(
103+
tuple_result: Tuple[str, typing.Any] = query_result.result(
100104
as_tuple=True,
101105
)
102106
```
103107

104108
### As class
105109

106110
#### Parameters
111+
107112
- `as_class`: Custom class from Python.
108113
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
109114

@@ -131,6 +136,7 @@ async def main() -> None:
131136
### Row Factory
132137

133138
#### Parameters
139+
134140
- `row_factory`: custom callable object.
135141
- `custom_decoders`: custom decoders for unsupported types. [Read more](/usage/types/advanced_type_usage.md)
136142

python/tests/test_query_results.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ async def test_result_as_tuple(
3939

4040
assert isinstance(conn_result, QueryResult)
4141
assert isinstance(single_tuple_row, tuple)
42-
assert single_tuple_row[0][0] == "id"
42+
assert single_tuple_row[0] == 1
4343

4444

4545
async def test_single_result_as_dict(
@@ -73,4 +73,4 @@ async def test_single_result_as_tuple(
7373

7474
assert isinstance(conn_result, SingleQueryResult)
7575
assert isinstance(result_tuple, tuple)
76-
assert result_tuple[0][0] == "id"
76+
assert result_tuple[0] == 1

python/tests/test_value_converter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ def point_encoder(point_bytes: bytes) -> str: # noqa: ARG001
672672
as_tuple=True,
673673
)
674674

675-
assert result[0][0][1] == "Just An Example"
675+
assert result[0][0] == "Just An Example"
676676

677677

678678
async def test_row_factory_query_result(

src/query_result.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@ fn row_to_tuple<'a>(
4242
postgres_row: &'a Row,
4343
custom_decoders: &Option<Py<PyDict>>,
4444
) -> PSQLPyResult<Bound<'a, PyTuple>> {
45-
let mut rows: Vec<Bound<'_, PyTuple>> = vec![];
45+
let columns = postgres_row.columns();
46+
let mut tuple_items = Vec::with_capacity(columns.len());
4647

47-
for (column_idx, column) in postgres_row.columns().iter().enumerate() {
48-
let python_type = postgres_to_py(py, postgres_row, column, column_idx, custom_decoders)?;
49-
let timed_tuple = PyTuple::new(py, vec![column.name().into_py_any(py)?, python_type])?;
50-
rows.push(timed_tuple);
48+
for (column_idx, column) in columns.iter().enumerate() {
49+
let python_value = postgres_to_py(py, postgres_row, column, column_idx, custom_decoders)?;
50+
tuple_items.push(python_value);
5151
}
52-
Ok(PyTuple::new(py, rows)?)
52+
53+
Ok(PyTuple::new(py, tuple_items)?)
5354
}
5455

5556
#[pyclass(name = "QueryResult")]

src/value_converter/to_python.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ pub fn raw_bytes_data_process(
604604

605605
if let Ok(Some(py_encoder_func)) = py_encoder_func {
606606
return Ok(py_encoder_func
607-
.call((raw_bytes_data.to_vec(),), None)?
607+
.call1((PyBytes::new(py, raw_bytes_data),))?
608608
.unbind());
609609
}
610610
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy