Skip to content

Commit c5efa1f

Browse files
committed
docs: Add README section for streaming query usage
1 parent c1cfd26 commit c5efa1f

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

README-zh.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,55 @@ print(query("select sum_udf(12,22)"))
149149

150150
更多示例,请参见 [examples](examples)[tests](tests)
151151

152+
<details>
153+
<summary><h4>🗂️ 流式查询</h4></summary>
154+
155+
通过分块流式处理大数据集,保持内存使用恒定。
156+
157+
```python
158+
from chdb import session as chs
159+
160+
sess = chs.Session()
161+
162+
# 示例1:流式查询基础用法
163+
rows_cnt = 0
164+
with sess.send_query("SELECT * FROM numbers(200000)", "CSV") as stream_result:
165+
for chunk in stream_result:
166+
rows_cnt += chunk.rows_read()
167+
168+
print(rows_cnt) # 200000
169+
170+
# 示例2:使用fetch()手动迭代
171+
rows_cnt = 0
172+
stream_result = sess.send_query("SELECT * FROM numbers(200000)", "CSV")
173+
while True:
174+
chunk = stream_result.fetch()
175+
if chunk is None:
176+
break
177+
rows_cnt += chunk.rows_read()
178+
179+
print(rows_cnt) # 200000
180+
181+
# 示例3:提前取消查询
182+
rows_cnt = 0
183+
stream_result = sess.send_query("SELECT * FROM numbers(200000)", "CSV")
184+
while True:
185+
chunk = stream_result.fetch()
186+
if chunk is None:
187+
break
188+
if rows_cnt > 0:
189+
stream_result.cancel()
190+
break
191+
rows_cnt += chunk.rows_read()
192+
193+
print(rows_cnt) # 65409
194+
195+
sess.close()
196+
```
197+
198+
更多细节请参考 [test_streaming_query.py](tests/test_streaming_query.py).
199+
</details>
200+
152201
## 演示和示例
153202

154203
- [Colab Notebook](https://colab.research.google.com/drive/1-zKB6oKfXeptggXi0kUX87iR8ZTSr4P3?usp=sharing) 和更多 [示例](examples)

README.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,56 @@ see also: [test_udf.py](tests/test_udf.py).
223223
</details>
224224
225225
226+
<details>
227+
<summary><h4>🗂️ Streaming Query</h4></summary>
228+
229+
Process large datasets with constant memory usage through chunked streaming.
230+
231+
```python
232+
from chdb import session as chs
233+
234+
sess = chs.Session()
235+
236+
# Example 1: Basic example of using streaming query
237+
rows_cnt = 0
238+
with sess.send_query("SELECT * FROM numbers(200000)", "CSV") as stream_result:
239+
for chunk in stream_result:
240+
rows_cnt += chunk.rows_read()
241+
242+
print(rows_cnt) # 200000
243+
244+
# Example 2: Manual iteration with fetch()
245+
rows_cnt = 0
246+
stream_result = sess.send_query("SELECT * FROM numbers(200000)", "CSV")
247+
while True:
248+
chunk = stream_result.fetch()
249+
if chunk is None:
250+
break
251+
rows_cnt += chunk.rows_read()
252+
253+
print(rows_cnt) # 200000
254+
255+
# Example 3: Early cancellation demo
256+
rows_cnt = 0
257+
stream_result = sess.send_query("SELECT * FROM numbers(200000)", "CSV")
258+
while True:
259+
chunk = stream_result.fetch()
260+
if chunk is None:
261+
break
262+
if rows_cnt > 0:
263+
stream_result.cancel()
264+
break
265+
rows_cnt += chunk.rows_read()
266+
267+
print(rows_cnt) # 65409
268+
269+
sess.close()
270+
```
271+
272+
For more details, see [test_streaming_query.py](tests/test_streaming_query.py).
273+
</details>
274+
275+
226276
<details>
227277
<summary><h4>🗂️ Python Table Engine</h4></summary>
228278

0 commit comments

Comments
 (0)