sqlspec 0.11.0__py3-none-any.whl → 0.11.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sqlspec might be problematic. Click here for more details.
- sqlspec/adapters/adbc/driver.py +37 -60
- sqlspec/adapters/aiosqlite/driver.py +73 -104
- sqlspec/adapters/asyncmy/driver.py +28 -44
- sqlspec/adapters/asyncpg/driver.py +34 -44
- sqlspec/adapters/bigquery/driver.py +79 -168
- sqlspec/adapters/duckdb/driver.py +20 -49
- sqlspec/adapters/oracledb/driver.py +66 -86
- sqlspec/adapters/psqlpy/driver.py +39 -56
- sqlspec/adapters/psycopg/driver.py +71 -112
- sqlspec/adapters/sqlite/driver.py +15 -35
- sqlspec/base.py +0 -41
- sqlspec/filters.py +2 -1
- sqlspec/mixins.py +9 -10
- {sqlspec-0.11.0.dist-info → sqlspec-0.11.1.dist-info}/METADATA +4 -1
- {sqlspec-0.11.0.dist-info → sqlspec-0.11.1.dist-info}/RECORD +18 -18
- {sqlspec-0.11.0.dist-info → sqlspec-0.11.1.dist-info}/WHEEL +0 -0
- {sqlspec-0.11.0.dist-info → sqlspec-0.11.1.dist-info}/licenses/LICENSE +0 -0
- {sqlspec-0.11.0.dist-info → sqlspec-0.11.1.dist-info}/licenses/NOTICE +0 -0
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, Any, Optional, Union, cast, overload
|
|
|
5
5
|
from oracledb import AsyncConnection, AsyncCursor, Connection, Cursor
|
|
6
6
|
|
|
7
7
|
from sqlspec.base import AsyncDriverAdapterProtocol, SyncDriverAdapterProtocol
|
|
8
|
+
from sqlspec.filters import StatementFilter
|
|
8
9
|
from sqlspec.mixins import (
|
|
9
10
|
AsyncArrowBulkOperationsMixin,
|
|
10
11
|
ResultConverter,
|
|
@@ -15,9 +16,8 @@ from sqlspec.statement import SQLStatement
|
|
|
15
16
|
from sqlspec.typing import ArrowTable, StatementParameterType, T
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
18
|
-
from collections.abc import AsyncGenerator, Generator, Sequence
|
|
19
|
+
from collections.abc import AsyncGenerator, Generator, Mapping, Sequence
|
|
19
20
|
|
|
20
|
-
from sqlspec.filters import StatementFilter
|
|
21
21
|
from sqlspec.typing import ModelDTOT
|
|
22
22
|
|
|
23
23
|
__all__ = ("OracleAsyncConnection", "OracleAsyncDriver", "OracleSyncConnection", "OracleSyncDriver")
|
|
@@ -37,7 +37,6 @@ class OracleDriverBase:
|
|
|
37
37
|
self,
|
|
38
38
|
sql: str,
|
|
39
39
|
parameters: "Optional[StatementParameterType]" = None,
|
|
40
|
-
/,
|
|
41
40
|
*filters: "StatementFilter",
|
|
42
41
|
**kwargs: Any,
|
|
43
42
|
) -> "tuple[str, Optional[Union[tuple[Any, ...], dict[str, Any]]]]":
|
|
@@ -52,15 +51,22 @@ class OracleDriverBase:
|
|
|
52
51
|
Returns:
|
|
53
52
|
A tuple of (sql, parameters) ready for execution.
|
|
54
53
|
"""
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
data_params_for_statement: Optional[Union[Mapping[str, Any], Sequence[Any]]] = None
|
|
55
|
+
combined_filters_list: list[StatementFilter] = list(filters)
|
|
56
|
+
|
|
57
|
+
if parameters is not None:
|
|
58
|
+
if isinstance(parameters, StatementFilter):
|
|
59
|
+
combined_filters_list.insert(0, parameters)
|
|
60
|
+
else:
|
|
61
|
+
data_params_for_statement = parameters
|
|
62
|
+
if data_params_for_statement is not None and not isinstance(data_params_for_statement, (list, tuple, dict)):
|
|
63
|
+
data_params_for_statement = (data_params_for_statement,)
|
|
64
|
+
|
|
65
|
+
if isinstance(data_params_for_statement, dict) and not data_params_for_statement and not kwargs:
|
|
57
66
|
return sql, None
|
|
58
67
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
# Apply any filters
|
|
63
|
-
for filter_obj in filters:
|
|
68
|
+
statement = SQLStatement(sql, data_params_for_statement, kwargs=kwargs, dialect=self.dialect)
|
|
69
|
+
for filter_obj in combined_filters_list:
|
|
64
70
|
statement = statement.apply_filter(filter_obj)
|
|
65
71
|
|
|
66
72
|
processed_sql, processed_params, _ = statement.process()
|
|
@@ -102,7 +108,6 @@ class OracleSyncDriver(
|
|
|
102
108
|
self,
|
|
103
109
|
sql: str,
|
|
104
110
|
parameters: "Optional[StatementParameterType]" = None,
|
|
105
|
-
/,
|
|
106
111
|
*filters: "StatementFilter",
|
|
107
112
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
108
113
|
schema_type: None = None,
|
|
@@ -113,7 +118,6 @@ class OracleSyncDriver(
|
|
|
113
118
|
self,
|
|
114
119
|
sql: str,
|
|
115
120
|
parameters: "Optional[StatementParameterType]" = None,
|
|
116
|
-
/,
|
|
117
121
|
*filters: "StatementFilter",
|
|
118
122
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
119
123
|
schema_type: "type[ModelDTOT]",
|
|
@@ -123,7 +127,6 @@ class OracleSyncDriver(
|
|
|
123
127
|
self,
|
|
124
128
|
sql: str,
|
|
125
129
|
parameters: "Optional[StatementParameterType]" = None,
|
|
126
|
-
/,
|
|
127
130
|
*filters: "StatementFilter",
|
|
128
131
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
129
132
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -149,7 +152,7 @@ class OracleSyncDriver(
|
|
|
149
152
|
results = cursor.fetchall() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
150
153
|
if not results:
|
|
151
154
|
return []
|
|
152
|
-
# Get column names
|
|
155
|
+
# Get column names from description
|
|
153
156
|
column_names = [col[0] for col in cursor.description or []] # pyright: ignore[reportUnknownMemberType,reportUnknownVariableType]
|
|
154
157
|
|
|
155
158
|
return self.to_schema([dict(zip(column_names, row)) for row in results], schema_type=schema_type)
|
|
@@ -159,7 +162,6 @@ class OracleSyncDriver(
|
|
|
159
162
|
self,
|
|
160
163
|
sql: str,
|
|
161
164
|
parameters: "Optional[StatementParameterType]" = None,
|
|
162
|
-
/,
|
|
163
165
|
*filters: "StatementFilter",
|
|
164
166
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
165
167
|
schema_type: None = None,
|
|
@@ -170,7 +172,6 @@ class OracleSyncDriver(
|
|
|
170
172
|
self,
|
|
171
173
|
sql: str,
|
|
172
174
|
parameters: "Optional[StatementParameterType]" = None,
|
|
173
|
-
/,
|
|
174
175
|
*filters: "StatementFilter",
|
|
175
176
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
176
177
|
schema_type: "type[ModelDTOT]",
|
|
@@ -180,7 +181,6 @@ class OracleSyncDriver(
|
|
|
180
181
|
self,
|
|
181
182
|
sql: str,
|
|
182
183
|
parameters: "Optional[StatementParameterType]" = None,
|
|
183
|
-
/,
|
|
184
184
|
*filters: "StatementFilter",
|
|
185
185
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
186
186
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -217,7 +217,6 @@ class OracleSyncDriver(
|
|
|
217
217
|
self,
|
|
218
218
|
sql: str,
|
|
219
219
|
parameters: "Optional[StatementParameterType]" = None,
|
|
220
|
-
/,
|
|
221
220
|
*filters: "StatementFilter",
|
|
222
221
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
223
222
|
schema_type: None = None,
|
|
@@ -228,7 +227,6 @@ class OracleSyncDriver(
|
|
|
228
227
|
self,
|
|
229
228
|
sql: str,
|
|
230
229
|
parameters: "Optional[StatementParameterType]" = None,
|
|
231
|
-
/,
|
|
232
230
|
*filters: "StatementFilter",
|
|
233
231
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
234
232
|
schema_type: "type[ModelDTOT]",
|
|
@@ -238,7 +236,6 @@ class OracleSyncDriver(
|
|
|
238
236
|
self,
|
|
239
237
|
sql: str,
|
|
240
238
|
parameters: "Optional[StatementParameterType]" = None,
|
|
241
|
-
/,
|
|
242
239
|
*filters: "StatementFilter",
|
|
243
240
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
244
241
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -276,7 +273,6 @@ class OracleSyncDriver(
|
|
|
276
273
|
self,
|
|
277
274
|
sql: str,
|
|
278
275
|
parameters: "Optional[StatementParameterType]" = None,
|
|
279
|
-
/,
|
|
280
276
|
*filters: "StatementFilter",
|
|
281
277
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
282
278
|
schema_type: None = None,
|
|
@@ -287,7 +283,6 @@ class OracleSyncDriver(
|
|
|
287
283
|
self,
|
|
288
284
|
sql: str,
|
|
289
285
|
parameters: "Optional[StatementParameterType]" = None,
|
|
290
|
-
/,
|
|
291
286
|
*filters: "StatementFilter",
|
|
292
287
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
293
288
|
schema_type: "type[T]",
|
|
@@ -297,7 +292,6 @@ class OracleSyncDriver(
|
|
|
297
292
|
self,
|
|
298
293
|
sql: str,
|
|
299
294
|
parameters: "Optional[StatementParameterType]" = None,
|
|
300
|
-
/,
|
|
301
295
|
*filters: "StatementFilter",
|
|
302
296
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
303
297
|
schema_type: "Optional[type[T]]" = None,
|
|
@@ -333,7 +327,6 @@ class OracleSyncDriver(
|
|
|
333
327
|
self,
|
|
334
328
|
sql: str,
|
|
335
329
|
parameters: "Optional[StatementParameterType]" = None,
|
|
336
|
-
/,
|
|
337
330
|
*filters: "StatementFilter",
|
|
338
331
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
339
332
|
schema_type: None = None,
|
|
@@ -344,7 +337,6 @@ class OracleSyncDriver(
|
|
|
344
337
|
self,
|
|
345
338
|
sql: str,
|
|
346
339
|
parameters: "Optional[StatementParameterType]" = None,
|
|
347
|
-
/,
|
|
348
340
|
*filters: "StatementFilter",
|
|
349
341
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
350
342
|
schema_type: "type[T]",
|
|
@@ -354,7 +346,6 @@ class OracleSyncDriver(
|
|
|
354
346
|
self,
|
|
355
347
|
sql: str,
|
|
356
348
|
parameters: "Optional[StatementParameterType]" = None,
|
|
357
|
-
/,
|
|
358
349
|
*filters: "StatementFilter",
|
|
359
350
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
360
351
|
schema_type: "Optional[type[T]]" = None,
|
|
@@ -390,7 +381,6 @@ class OracleSyncDriver(
|
|
|
390
381
|
self,
|
|
391
382
|
sql: str,
|
|
392
383
|
parameters: "Optional[StatementParameterType]" = None,
|
|
393
|
-
/,
|
|
394
384
|
*filters: "StatementFilter",
|
|
395
385
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
396
386
|
**kwargs: Any,
|
|
@@ -419,7 +409,6 @@ class OracleSyncDriver(
|
|
|
419
409
|
self,
|
|
420
410
|
sql: str,
|
|
421
411
|
parameters: "Optional[StatementParameterType]" = None,
|
|
422
|
-
/,
|
|
423
412
|
*filters: "StatementFilter",
|
|
424
413
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
425
414
|
schema_type: None = None,
|
|
@@ -430,7 +419,6 @@ class OracleSyncDriver(
|
|
|
430
419
|
self,
|
|
431
420
|
sql: str,
|
|
432
421
|
parameters: "Optional[StatementParameterType]" = None,
|
|
433
|
-
/,
|
|
434
422
|
*filters: "StatementFilter",
|
|
435
423
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
436
424
|
schema_type: "type[ModelDTOT]",
|
|
@@ -440,7 +428,6 @@ class OracleSyncDriver(
|
|
|
440
428
|
self,
|
|
441
429
|
sql: str,
|
|
442
430
|
parameters: "Optional[StatementParameterType]" = None,
|
|
443
|
-
/,
|
|
444
431
|
*filters: "StatementFilter",
|
|
445
432
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
446
433
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -473,7 +460,6 @@ class OracleSyncDriver(
|
|
|
473
460
|
self,
|
|
474
461
|
sql: str,
|
|
475
462
|
parameters: "Optional[StatementParameterType]" = None,
|
|
476
|
-
/,
|
|
477
463
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
478
464
|
**kwargs: Any,
|
|
479
465
|
) -> str:
|
|
@@ -482,7 +468,6 @@ class OracleSyncDriver(
|
|
|
482
468
|
Args:
|
|
483
469
|
sql: The SQL script to execute.
|
|
484
470
|
parameters: The parameters for the script (dict, tuple, list, or None).
|
|
485
|
-
*filters: Statement filters to apply.
|
|
486
471
|
connection: Optional connection override.
|
|
487
472
|
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
488
473
|
|
|
@@ -500,8 +485,7 @@ class OracleSyncDriver(
|
|
|
500
485
|
self,
|
|
501
486
|
sql: str,
|
|
502
487
|
parameters: "Optional[StatementParameterType]" = None,
|
|
503
|
-
|
|
504
|
-
*,
|
|
488
|
+
*filters: "StatementFilter",
|
|
505
489
|
connection: "Optional[OracleSyncConnection]" = None,
|
|
506
490
|
**kwargs: Any,
|
|
507
491
|
) -> "ArrowTable": # pyright: ignore[reportUnknownVariableType]
|
|
@@ -512,7 +496,7 @@ class OracleSyncDriver(
|
|
|
512
496
|
"""
|
|
513
497
|
|
|
514
498
|
connection = self._connection(connection)
|
|
515
|
-
sql, parameters = self._process_sql_params(sql, parameters, **kwargs)
|
|
499
|
+
sql, parameters = self._process_sql_params(sql, parameters, *filters, **kwargs)
|
|
516
500
|
results = connection.fetch_df_all(sql, parameters)
|
|
517
501
|
return cast("ArrowTable", ArrowTable.from_arrays(arrays=results.column_arrays(), names=results.column_names())) # pyright: ignore
|
|
518
502
|
|
|
@@ -557,7 +541,6 @@ class OracleAsyncDriver(
|
|
|
557
541
|
self,
|
|
558
542
|
sql: str,
|
|
559
543
|
parameters: "Optional[StatementParameterType]" = None,
|
|
560
|
-
/,
|
|
561
544
|
*filters: "StatementFilter",
|
|
562
545
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
563
546
|
schema_type: None = None,
|
|
@@ -568,7 +551,6 @@ class OracleAsyncDriver(
|
|
|
568
551
|
self,
|
|
569
552
|
sql: str,
|
|
570
553
|
parameters: "Optional[StatementParameterType]" = None,
|
|
571
|
-
/,
|
|
572
554
|
*filters: "StatementFilter",
|
|
573
555
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
574
556
|
schema_type: "type[ModelDTOT]",
|
|
@@ -578,7 +560,6 @@ class OracleAsyncDriver(
|
|
|
578
560
|
self,
|
|
579
561
|
sql: str,
|
|
580
562
|
parameters: "Optional[StatementParameterType]" = None,
|
|
581
|
-
/,
|
|
582
563
|
*filters: "StatementFilter",
|
|
583
564
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
584
565
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -586,6 +567,14 @@ class OracleAsyncDriver(
|
|
|
586
567
|
) -> "Sequence[Union[ModelDTOT, dict[str, Any]]]":
|
|
587
568
|
"""Fetch data from the database.
|
|
588
569
|
|
|
570
|
+
Args:
|
|
571
|
+
sql: The SQL query string.
|
|
572
|
+
parameters: The parameters for the query (dict, tuple, list, or None).
|
|
573
|
+
*filters: Statement filters to apply.
|
|
574
|
+
connection: Optional connection override.
|
|
575
|
+
schema_type: Optional schema class for the result.
|
|
576
|
+
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
577
|
+
|
|
589
578
|
Returns:
|
|
590
579
|
List of row data as either model instances or dictionaries.
|
|
591
580
|
"""
|
|
@@ -597,20 +586,16 @@ class OracleAsyncDriver(
|
|
|
597
586
|
results = await cursor.fetchall() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
598
587
|
if not results:
|
|
599
588
|
return []
|
|
600
|
-
# Get column names
|
|
589
|
+
# Get column names from description
|
|
601
590
|
column_names = [col[0] for col in cursor.description or []] # pyright: ignore[reportUnknownMemberType,reportUnknownVariableType]
|
|
602
591
|
|
|
603
|
-
|
|
604
|
-
return [cast("ModelDTOT", schema_type(**dict(zip(column_names, row)))) for row in results] # pyright: ignore
|
|
605
|
-
|
|
606
|
-
return [dict(zip(column_names, row)) for row in results] # pyright: ignore
|
|
592
|
+
return self.to_schema([dict(zip(column_names, row)) for row in results], schema_type=schema_type)
|
|
607
593
|
|
|
608
594
|
@overload
|
|
609
595
|
async def select_one(
|
|
610
596
|
self,
|
|
611
597
|
sql: str,
|
|
612
598
|
parameters: "Optional[StatementParameterType]" = None,
|
|
613
|
-
/,
|
|
614
599
|
*filters: "StatementFilter",
|
|
615
600
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
616
601
|
schema_type: None = None,
|
|
@@ -621,7 +606,6 @@ class OracleAsyncDriver(
|
|
|
621
606
|
self,
|
|
622
607
|
sql: str,
|
|
623
608
|
parameters: "Optional[StatementParameterType]" = None,
|
|
624
|
-
/,
|
|
625
609
|
*filters: "StatementFilter",
|
|
626
610
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
627
611
|
schema_type: "type[ModelDTOT]",
|
|
@@ -631,7 +615,6 @@ class OracleAsyncDriver(
|
|
|
631
615
|
self,
|
|
632
616
|
sql: str,
|
|
633
617
|
parameters: "Optional[StatementParameterType]" = None,
|
|
634
|
-
/,
|
|
635
618
|
*filters: "StatementFilter",
|
|
636
619
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
637
620
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -639,6 +622,14 @@ class OracleAsyncDriver(
|
|
|
639
622
|
) -> "Union[ModelDTOT, dict[str, Any]]":
|
|
640
623
|
"""Fetch one row from the database.
|
|
641
624
|
|
|
625
|
+
Args:
|
|
626
|
+
sql: The SQL query string.
|
|
627
|
+
parameters: The parameters for the query (dict, tuple, list, or None).
|
|
628
|
+
*filters: Statement filters to apply.
|
|
629
|
+
connection: Optional connection override.
|
|
630
|
+
schema_type: Optional schema class for the result.
|
|
631
|
+
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
632
|
+
|
|
642
633
|
Returns:
|
|
643
634
|
The first row of the query results.
|
|
644
635
|
"""
|
|
@@ -649,20 +640,15 @@ class OracleAsyncDriver(
|
|
|
649
640
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
650
641
|
result = await cursor.fetchone() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
651
642
|
result = self.check_not_found(result) # pyright: ignore[reportUnknownArgumentType]
|
|
652
|
-
# Get column names
|
|
653
643
|
column_names = [col[0] for col in cursor.description or []] # pyright: ignore[reportUnknownMemberType,reportUnknownVariableType]
|
|
654
644
|
|
|
655
|
-
|
|
656
|
-
return cast("ModelDTOT", schema_type(**dict(zip(column_names, result)))) # pyright: ignore[reportUnknownArgumentType]
|
|
657
|
-
# Always return dictionaries
|
|
658
|
-
return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
|
|
645
|
+
return self.to_schema(dict(zip(column_names, result)), schema_type=schema_type)
|
|
659
646
|
|
|
660
647
|
@overload
|
|
661
648
|
async def select_one_or_none(
|
|
662
649
|
self,
|
|
663
650
|
sql: str,
|
|
664
651
|
parameters: "Optional[StatementParameterType]" = None,
|
|
665
|
-
/,
|
|
666
652
|
*filters: "StatementFilter",
|
|
667
653
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
668
654
|
schema_type: None = None,
|
|
@@ -673,7 +659,6 @@ class OracleAsyncDriver(
|
|
|
673
659
|
self,
|
|
674
660
|
sql: str,
|
|
675
661
|
parameters: "Optional[StatementParameterType]" = None,
|
|
676
|
-
/,
|
|
677
662
|
*filters: "StatementFilter",
|
|
678
663
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
679
664
|
schema_type: "type[ModelDTOT]",
|
|
@@ -683,16 +668,23 @@ class OracleAsyncDriver(
|
|
|
683
668
|
self,
|
|
684
669
|
sql: str,
|
|
685
670
|
parameters: "Optional[StatementParameterType]" = None,
|
|
686
|
-
/,
|
|
687
671
|
*filters: "StatementFilter",
|
|
688
672
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
689
673
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
690
674
|
**kwargs: Any,
|
|
691
675
|
) -> "Optional[Union[ModelDTOT, dict[str, Any]]]":
|
|
692
|
-
"""Fetch one row from the database.
|
|
676
|
+
"""Fetch one row from the database or return None if no rows found.
|
|
677
|
+
|
|
678
|
+
Args:
|
|
679
|
+
sql: The SQL query string.
|
|
680
|
+
parameters: The parameters for the query (dict, tuple, list, or None).
|
|
681
|
+
*filters: Statement filters to apply.
|
|
682
|
+
connection: Optional connection override.
|
|
683
|
+
schema_type: Optional schema class for the result.
|
|
684
|
+
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
693
685
|
|
|
694
686
|
Returns:
|
|
695
|
-
The first row of the query results.
|
|
687
|
+
The first row of the query results, or None if no results found.
|
|
696
688
|
"""
|
|
697
689
|
connection = self._connection(connection)
|
|
698
690
|
sql, parameters = self._process_sql_params(sql, parameters, *filters, **kwargs)
|
|
@@ -700,24 +692,16 @@ class OracleAsyncDriver(
|
|
|
700
692
|
async with self._with_cursor(connection) as cursor:
|
|
701
693
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
702
694
|
result = await cursor.fetchone() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
703
|
-
|
|
704
695
|
if result is None:
|
|
705
696
|
return None
|
|
706
|
-
|
|
707
|
-
# Get column names
|
|
708
697
|
column_names = [col[0] for col in cursor.description or []] # pyright: ignore[reportUnknownMemberType,reportUnknownVariableType]
|
|
709
|
-
|
|
710
|
-
if schema_type is not None:
|
|
711
|
-
return cast("ModelDTOT", schema_type(**dict(zip(column_names, result)))) # pyright: ignore[reportUnknownArgumentType]
|
|
712
|
-
# Always return dictionaries
|
|
713
|
-
return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
|
|
698
|
+
return self.to_schema(dict(zip(column_names, result)), schema_type=schema_type)
|
|
714
699
|
|
|
715
700
|
@overload
|
|
716
701
|
async def select_value(
|
|
717
702
|
self,
|
|
718
703
|
sql: str,
|
|
719
704
|
parameters: "Optional[StatementParameterType]" = None,
|
|
720
|
-
/,
|
|
721
705
|
*filters: "StatementFilter",
|
|
722
706
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
723
707
|
schema_type: None = None,
|
|
@@ -728,7 +712,6 @@ class OracleAsyncDriver(
|
|
|
728
712
|
self,
|
|
729
713
|
sql: str,
|
|
730
714
|
parameters: "Optional[StatementParameterType]" = None,
|
|
731
|
-
/,
|
|
732
715
|
*filters: "StatementFilter",
|
|
733
716
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
734
717
|
schema_type: "type[T]",
|
|
@@ -738,7 +721,6 @@ class OracleAsyncDriver(
|
|
|
738
721
|
self,
|
|
739
722
|
sql: str,
|
|
740
723
|
parameters: "Optional[StatementParameterType]" = None,
|
|
741
|
-
/,
|
|
742
724
|
*filters: "StatementFilter",
|
|
743
725
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
744
726
|
schema_type: "Optional[type[T]]" = None,
|
|
@@ -763,7 +745,7 @@ class OracleAsyncDriver(
|
|
|
763
745
|
async with self._with_cursor(connection) as cursor:
|
|
764
746
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
765
747
|
result = await cursor.fetchone() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
766
|
-
result = self.check_not_found(result)
|
|
748
|
+
result = self.check_not_found(result) # pyright: ignore[reportUnknownArgumentType]
|
|
767
749
|
|
|
768
750
|
if schema_type is None:
|
|
769
751
|
return result[0] # pyright: ignore[reportUnknownArgumentType]
|
|
@@ -774,7 +756,6 @@ class OracleAsyncDriver(
|
|
|
774
756
|
self,
|
|
775
757
|
sql: str,
|
|
776
758
|
parameters: "Optional[StatementParameterType]" = None,
|
|
777
|
-
/,
|
|
778
759
|
*filters: "StatementFilter",
|
|
779
760
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
780
761
|
schema_type: None = None,
|
|
@@ -785,7 +766,6 @@ class OracleAsyncDriver(
|
|
|
785
766
|
self,
|
|
786
767
|
sql: str,
|
|
787
768
|
parameters: "Optional[StatementParameterType]" = None,
|
|
788
|
-
/,
|
|
789
769
|
*filters: "StatementFilter",
|
|
790
770
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
791
771
|
schema_type: "type[T]",
|
|
@@ -795,7 +775,6 @@ class OracleAsyncDriver(
|
|
|
795
775
|
self,
|
|
796
776
|
sql: str,
|
|
797
777
|
parameters: "Optional[StatementParameterType]" = None,
|
|
798
|
-
/,
|
|
799
778
|
*filters: "StatementFilter",
|
|
800
779
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
801
780
|
schema_type: "Optional[type[T]]" = None,
|
|
@@ -831,12 +810,11 @@ class OracleAsyncDriver(
|
|
|
831
810
|
self,
|
|
832
811
|
sql: str,
|
|
833
812
|
parameters: "Optional[StatementParameterType]" = None,
|
|
834
|
-
/,
|
|
835
813
|
*filters: "StatementFilter",
|
|
836
814
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
837
815
|
**kwargs: Any,
|
|
838
816
|
) -> int:
|
|
839
|
-
"""
|
|
817
|
+
"""Insert, update, or delete data from the database.
|
|
840
818
|
|
|
841
819
|
Args:
|
|
842
820
|
sql: The SQL statement to execute.
|
|
@@ -846,21 +824,20 @@ class OracleAsyncDriver(
|
|
|
846
824
|
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
847
825
|
|
|
848
826
|
Returns:
|
|
849
|
-
|
|
827
|
+
Row count affected by the operation.
|
|
850
828
|
"""
|
|
851
829
|
connection = self._connection(connection)
|
|
852
830
|
sql, parameters = self._process_sql_params(sql, parameters, *filters, **kwargs)
|
|
853
831
|
|
|
854
832
|
async with self._with_cursor(connection) as cursor:
|
|
855
833
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
856
|
-
return cursor.rowcount # pyright: ignore[reportUnknownMemberType]
|
|
834
|
+
return cursor.rowcount # pyright: ignore[reportUnknownMemberType,reportUnknownVariableType]
|
|
857
835
|
|
|
858
836
|
@overload
|
|
859
837
|
async def insert_update_delete_returning(
|
|
860
838
|
self,
|
|
861
839
|
sql: str,
|
|
862
840
|
parameters: "Optional[StatementParameterType]" = None,
|
|
863
|
-
/,
|
|
864
841
|
*filters: "StatementFilter",
|
|
865
842
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
866
843
|
schema_type: None = None,
|
|
@@ -871,7 +848,6 @@ class OracleAsyncDriver(
|
|
|
871
848
|
self,
|
|
872
849
|
sql: str,
|
|
873
850
|
parameters: "Optional[StatementParameterType]" = None,
|
|
874
|
-
/,
|
|
875
851
|
*filters: "StatementFilter",
|
|
876
852
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
877
853
|
schema_type: "type[ModelDTOT]",
|
|
@@ -881,7 +857,6 @@ class OracleAsyncDriver(
|
|
|
881
857
|
self,
|
|
882
858
|
sql: str,
|
|
883
859
|
parameters: "Optional[StatementParameterType]" = None,
|
|
884
|
-
/,
|
|
885
860
|
*filters: "StatementFilter",
|
|
886
861
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
887
862
|
schema_type: "Optional[type[ModelDTOT]]" = None,
|
|
@@ -889,8 +864,16 @@ class OracleAsyncDriver(
|
|
|
889
864
|
) -> "Optional[Union[dict[str, Any], ModelDTOT]]":
|
|
890
865
|
"""Insert, update, or delete data from the database and return result.
|
|
891
866
|
|
|
867
|
+
Args:
|
|
868
|
+
sql: The SQL statement with RETURNING clause.
|
|
869
|
+
parameters: The parameters for the statement (dict, tuple, list, or None).
|
|
870
|
+
*filters: Statement filters to apply.
|
|
871
|
+
connection: Optional connection override.
|
|
872
|
+
schema_type: Optional schema class for the result.
|
|
873
|
+
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
874
|
+
|
|
892
875
|
Returns:
|
|
893
|
-
The
|
|
876
|
+
The returned row data, as either a model instance or dictionary.
|
|
894
877
|
"""
|
|
895
878
|
connection = self._connection(connection)
|
|
896
879
|
sql, parameters = self._process_sql_params(sql, parameters, *filters, **kwargs)
|
|
@@ -898,7 +881,6 @@ class OracleAsyncDriver(
|
|
|
898
881
|
async with self._with_cursor(connection) as cursor:
|
|
899
882
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
900
883
|
result = await cursor.fetchone() # pyright: ignore[reportUnknownMemberType, reportUnknownVariableType]
|
|
901
|
-
|
|
902
884
|
if result is None:
|
|
903
885
|
return None
|
|
904
886
|
|
|
@@ -907,14 +889,12 @@ class OracleAsyncDriver(
|
|
|
907
889
|
|
|
908
890
|
if schema_type is not None:
|
|
909
891
|
return cast("ModelDTOT", schema_type(**dict(zip(column_names, result)))) # pyright: ignore[reportUnknownArgumentType]
|
|
910
|
-
# Always return dictionaries
|
|
911
892
|
return dict(zip(column_names, result)) # pyright: ignore[reportUnknownArgumentType,reportUnknownVariableType]
|
|
912
893
|
|
|
913
894
|
async def execute_script(
|
|
914
895
|
self,
|
|
915
896
|
sql: str,
|
|
916
897
|
parameters: "Optional[StatementParameterType]" = None,
|
|
917
|
-
/,
|
|
918
898
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
919
899
|
**kwargs: Any,
|
|
920
900
|
) -> str:
|
|
@@ -936,12 +916,11 @@ class OracleAsyncDriver(
|
|
|
936
916
|
await cursor.execute(sql, parameters) # pyright: ignore[reportUnknownMemberType]
|
|
937
917
|
return str(cursor.rowcount) # pyright: ignore[reportUnknownMemberType]
|
|
938
918
|
|
|
939
|
-
async def select_arrow(
|
|
919
|
+
async def select_arrow(
|
|
940
920
|
self,
|
|
941
921
|
sql: str,
|
|
942
922
|
parameters: "Optional[StatementParameterType]" = None,
|
|
943
|
-
|
|
944
|
-
*,
|
|
923
|
+
*filters: "StatementFilter",
|
|
945
924
|
connection: "Optional[OracleAsyncConnection]" = None,
|
|
946
925
|
**kwargs: Any,
|
|
947
926
|
) -> "ArrowTable": # pyright: ignore[reportUnknownVariableType]
|
|
@@ -950,6 +929,7 @@ class OracleAsyncDriver(
|
|
|
950
929
|
Args:
|
|
951
930
|
sql: The SQL query string.
|
|
952
931
|
parameters: Parameters for the query.
|
|
932
|
+
filters: Statement filters to apply.
|
|
953
933
|
connection: Optional connection override.
|
|
954
934
|
**kwargs: Additional keyword arguments to merge with parameters if parameters is a dict.
|
|
955
935
|
|
|
@@ -958,7 +938,7 @@ class OracleAsyncDriver(
|
|
|
958
938
|
"""
|
|
959
939
|
|
|
960
940
|
connection = self._connection(connection)
|
|
961
|
-
sql, parameters = self._process_sql_params(sql, parameters, **kwargs)
|
|
941
|
+
sql, parameters = self._process_sql_params(sql, parameters, *filters, **kwargs)
|
|
962
942
|
results = await connection.fetch_df_all(sql, parameters)
|
|
963
943
|
return ArrowTable.from_arrays(arrays=results.column_arrays(), names=results.column_names()) # pyright: ignore
|
|
964
944
|
|