graflo.data_source.sql¶
SQL database data source implementation.
This module provides a data source for SQL databases using SQLAlchemy-style configuration. It supports parameterized queries and streams rows in bounded memory using server-side cursor semantics where the driver supports them.
SQLConfig
¶
Bases: ConfigBaseModel
Configuration for SQL data source.
Uses SQLAlchemy connection string format.
Attributes:
| Name | Type | Description |
|---|---|---|
connection_string |
str
|
SQLAlchemy connection string (e.g., 'postgresql://user:pass@localhost/dbname') |
query |
str
|
SQL query string (supports parameterized queries) |
params |
dict[str, Any]
|
Query parameters as dictionary (for parameterized queries) |
pagination |
bool | None
|
Deprecated. Ignored; retained for config compatibility. |
page_size |
int | None
|
Deprecated. Ignored; use |
Source code in graflo/data_source/sql.py
SQLDataSource
¶
Bases: AbstractDataSource
Data source for SQL databases.
This class provides a data source for SQL databases using SQLAlchemy.
Results are streamed with stream_results and fetchmany so large
queries avoid OFFSET-based re-scans and bounded memory per chunk.
Rows are returned as dictionaries with column names as keys.
Attributes:
| Name | Type | Description |
|---|---|---|
config |
SQLConfig
|
SQL configuration |
engine |
SQLConfig
|
SQLAlchemy engine (created on first use) |
Source code in graflo/data_source/sql.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | |
iter_batches(batch_size=1000, limit=None)
¶
Iterate over SQL query results in batches.
Executes the configured query once per call and reads via
fetchmany on a streaming result. Optional limit stops after
that many rows without adding LIMIT/OFFSET to the SQL text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
batch_size
|
int
|
Target size of each yielded batch of row dicts (last batch may be smaller). |
1000
|
limit
|
int | None
|
Maximum total rows to read, or |
None
|
Yields:
| Type | Description |
|---|---|
list[dict]
|
list[dict]: Batches of rows as dictionaries |