File tree Expand file tree Collapse file tree 2 files changed +99
-0
lines changed Expand file tree Collapse file tree 2 files changed +99
-0
lines changed Original file line number Diff line number Diff 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 )
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments