| import{_ as n,c as a,b as l,o as e}from"./app-pmkzp6TS.js";const o={};function p(t,s){return e(),a("div",null,[...s[0]||(s[0]=[l(`<h1 id="python-原生接口" tabindex="-1"><a class="header-anchor" href="#python-原生接口"><span>Python 原生接口</span></a></h1><h2 id="_1-使用方式" tabindex="-1"><a class="header-anchor" href="#_1-使用方式"><span>1. 使用方式</span></a></h2><p>安装依赖包:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">pip3</span><span style="color:#98C379;"> install</span><span style="color:#98C379;"> apache-iotd</span><span style="color:#ABB2BF;">b></span><span style="color:#98C379;">=</span><span style="color:#D19A66;">2.0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>注意:请勿使用高版本客户端连接低版本服务。</p><h2 id="_2-读写操作" tabindex="-1"><a class="header-anchor" href="#_2-读写操作"><span>2. 读写操作</span></a></h2><h3 id="_2-1-tablesession" tabindex="-1"><a class="header-anchor" href="#_2-1-tablesession"><span>2.1 TableSession</span></a></h3><h4 id="_2-1-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_2-1-1-功能描述"><span>2.1.1 功能描述</span></a></h4><p>TableSession是IoTDB的一个核心类,用于与IoTDB数据库进行交互。通过这个类,用户可以执行SQL语句、插入数据以及管理数据库会话。</p><h4 id="_2-1-2-方法列表" tabindex="-1"><a class="header-anchor" href="#_2-1-2-方法列表"><span>2.1.2 方法列表</span></a></h4><table><thead><tr><th><strong>方法名称</strong></th><th><strong>描述</strong></th><th><strong>参数类型</strong></th><th><strong>返回类型</strong></th></tr></thead><tbody><tr><td>insert</td><td>写入数据</td><td>tablet: Union[Tablet, NumpyTablet]</td><td>None</td></tr><tr><td>execute_non_query_statement</td><td>执行非查询 SQL 语句,如 DDL 和 DML</td><td>sql: str</td><td>None</td></tr><tr><td>execute_query_statement</td><td>执行查询 SQL 语句并返回结果集</td><td>sql: str</td><td>SessionDataSet</td></tr><tr><td>close</td><td>关闭会话并释放资源</td><td>None</td><td>None</td></tr></tbody></table><p>自 V2.0.8 版本起,SessionDataSet 提供分批获取 DataFrame 的方法,用于高效处理大数据量查询:</p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#7F848E;font-style:italic;"># 分批获取 DataFrame</span></span> |
| <span class="line"><span style="color:#ABB2BF;">has_next </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> result.</span><span style="color:#61AFEF;">has_next_df</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#C678DD;">if</span><span style="color:#ABB2BF;"> has_next:</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> df </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> result.</span><span style="color:#61AFEF;">next_df</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # 处理 DataFrame</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>方法说明:</strong></p><ul><li><code>has_next_df()</code>: 返回 <code>True</code>/<code>False</code>,表示是否还有数据可返回</li><li><code>next_df()</code>: 返回 <code>DataFrame</code> 或 <code>None</code>,每次返回 <code>fetchSize</code> 行(默认5000行,由 Session 的 <code>fetch_size</code> 参数控制) <ul><li>剩余数据 ≥ <code>fetchSize</code> 时,返回 <code>fetchSize</code> 行</li><li>剩余数据 < <code>fetchSize</code> 时,返回剩余所有行</li><li>数据遍历完毕时,返回 <code>None</code></li></ul></li><li>初始化 Session 时检查 <code>fetchSize</code>,若 ≤0 则重置为 5000 并打印警告日志</li></ul><p><strong>注意:</strong> 不要混合使用不同的遍历方式,如(todf函数与 next_df 混用),否则会出现预期外的错误。</p><h4 id="_2-1-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_2-1-3-接口展示"><span>2.1.3 接口展示</span></a></h4><p><strong>TableSession:</strong></p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#C678DD;">class</span><span style="color:#E5C07B;"> TableSession</span><span style="color:#ABB2BF;">(</span><span style="color:#56B6C2;">object</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> insert</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;font-style:italic;">tablet</span><span style="color:#ABB2BF;">: Union[Tablet, NumpyTablet]):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Insert data into the database.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Parameters:</span></span> |
| <span class="line"><span style="color:#98C379;"> tablet (Tablet | NumpyTablet): The tablet containing the data to be inserted.</span></span> |
| <span class="line"><span style="color:#98C379;"> Accepts either a \`Tablet\` or \`NumpyTablet\`.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Raises:</span></span> |
| <span class="line"><span style="color:#98C379;"> IoTDBConnectionException: If there is an issue with the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#C678DD;"> pass</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> execute_non_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;font-style:italic;">sql</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Execute a non-query SQL statement.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Parameters:</span></span> |
| <span class="line"><span style="color:#98C379;"> sql (str): The SQL statement to execute. Typically used for commands</span></span> |
| <span class="line"><span style="color:#98C379;"> such as INSERT, DELETE, or UPDATE.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Raises:</span></span> |
| <span class="line"><span style="color:#98C379;"> IoTDBConnectionException: If there is an issue with the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#C678DD;"> pass</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;font-style:italic;">sql</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;font-style:italic;">timeout_in_ms</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">) -> </span><span style="color:#98C379;">"SessionDataSet"</span><span style="color:#ABB2BF;">:</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Execute a query SQL statement and return the result set.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Parameters:</span></span> |
| <span class="line"><span style="color:#98C379;"> sql (str): The SQL query to execute.</span></span> |
| <span class="line"><span style="color:#98C379;"> timeout_in_ms (int, optional): Timeout for the query in milliseconds. Defaults to 0,</span></span> |
| <span class="line"><span style="color:#98C379;"> which means no timeout.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Returns:</span></span> |
| <span class="line"><span style="color:#98C379;"> SessionDataSet: The result set of the query.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Raises:</span></span> |
| <span class="line"><span style="color:#98C379;"> IoTDBConnectionException: If there is an issue with the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#C678DD;"> pass</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> close</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Close the session and release resources.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Raises:</span></span> |
| <span class="line"><span style="color:#98C379;"> IoTDBConnectionException: If there is an issue closing the connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#C678DD;"> pass</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-2-tablesessionconfig" tabindex="-1"><a class="header-anchor" href="#_2-2-tablesessionconfig"><span>2.2 TableSessionConfig</span></a></h3><h4 id="_2-2-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_2-2-1-功能描述"><span>2.2.1 功能描述</span></a></h4><p>TableSessionConfig是一个配置类,用于设置和创建TableSession 实例。它定义了连接到IoTDB数据库所需的各种参数。</p><h4 id="_2-2-2-配置选项" tabindex="-1"><a class="header-anchor" href="#_2-2-2-配置选项"><span>2.2.2 配置选项</span></a></h4><table><thead><tr><th><strong>配置项</strong></th><th><strong>描述</strong></th><th><strong>类型</strong></th><th><strong>默认值</strong></th></tr></thead><tbody><tr><td>node_urls</td><td>数据库连接的节点 URL 列表</td><td>list</td><td>["localhost:6667"]</td></tr><tr><td>username</td><td>数据库连接用户名</td><td>str</td><td>"root"</td></tr><tr><td>password</td><td>数据库连接密码</td><td>str</td><td>"root"</td></tr><tr><td>database</td><td>要连接的目标数据库</td><td>str</td><td>None</td></tr><tr><td>fetch_size</td><td>每次查询获取的行数</td><td>int</td><td>5000</td></tr><tr><td>time_zone</td><td>会话的默认时区</td><td>str</td><td>Session.DEFAULT_ZONE_ID</td></tr><tr><td>enable_compression</td><td>是否启用数据压缩</td><td>bool</td><td>False</td></tr></tbody></table><h4 id="_2-2-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_2-2-3-接口展示"><span>2.2.3 接口展示</span></a></h4><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#C678DD;">class</span><span style="color:#E5C07B;"> TableSessionConfig</span><span style="color:#ABB2BF;">(</span><span style="color:#56B6C2;">object</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Configuration class for a TableSession. </span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> This class defines various parameters for connecting to and interacting </span></span> |
| <span class="line"><span style="color:#98C379;"> with the IoTDB tables.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;"> def</span><span style="color:#56B6C2;"> __init__</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#E5C07B;font-style:italic;"> self</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> node_urls</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">list</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> None</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> username</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_USER</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> password</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_PASSWORD</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> database</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> None</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> fetch_size</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 5000</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> time_zone</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_ZONE_ID</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> enable_compression</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">bool</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> False</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Initialize a TableSessionConfig object with the provided parameters.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Parameters:</span></span> |
| <span class="line"><span style="color:#98C379;"> node_urls (list, optional): A list of node URLs for the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to ["localhost:6667"].</span></span> |
| <span class="line"><span style="color:#98C379;"> username (str, optional): The username for the database connection. </span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to "root".</span></span> |
| <span class="line"><span style="color:#98C379;"> password (str, optional): The password for the database connection. </span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to "root".</span></span> |
| <span class="line"><span style="color:#98C379;"> database (str, optional): The target database to connect to. Defaults to None.</span></span> |
| <span class="line"><span style="color:#98C379;"> fetch_size (int, optional): The number of rows to fetch per query. Defaults to 5000.</span></span> |
| <span class="line"><span style="color:#98C379;"> time_zone (str, optional): The default time zone for the session. </span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to Session.DEFAULT_ZONE_ID.</span></span> |
| <span class="line"><span style="color:#98C379;"> enable_compression (bool, optional): Whether to enable data compression. </span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to False.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>注意事项:</strong></p><p>在使用完 TableSession 后,务必调用 close 方法来释放资源。</p><h2 id="_3-客户端连接池" tabindex="-1"><a class="header-anchor" href="#_3-客户端连接池"><span>3. 客户端连接池</span></a></h2><h3 id="_3-1-tablesessionpool" tabindex="-1"><a class="header-anchor" href="#_3-1-tablesessionpool"><span>3.1 TableSessionPool</span></a></h3><h4 id="_3-1-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_3-1-1-功能描述"><span>3.1.1 功能描述</span></a></h4><p>TableSessionPool 是一个会话池管理类,用于管理 TableSession 实例的创建和销毁。它提供了从池中获取会话和关闭会话池的功能。</p><h4 id="_3-1-2-方法列表" tabindex="-1"><a class="header-anchor" href="#_3-1-2-方法列表"><span>3.1.2 方法列表</span></a></h4><table><thead><tr><th><strong>方法名称</strong></th><th><strong>描述</strong></th><th><strong>返回类型</strong></th><th><strong>异常</strong></th></tr></thead><tbody><tr><td>get_session</td><td>从会话池中检索一个新的 TableSession 实例</td><td>TableSession</td><td>无</td></tr><tr><td>close</td><td>关闭会话池并释放所有资源</td><td>None</td><td>无</td></tr></tbody></table><h4 id="_3-1-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_3-1-3-接口展示"><span>3.1.3 接口展示</span></a></h4><p><strong>TableSessionPool:</strong></p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> get_session</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">) -> TableSession:</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Retrieve a new TableSession instance.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Returns:</span></span> |
| <span class="line"><span style="color:#98C379;"> TableSession: A new session object configured with the session pool.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Notes:</span></span> |
| <span class="line"><span style="color:#98C379;"> The session is initialized with the underlying session pool for managing</span></span> |
| <span class="line"><span style="color:#98C379;"> connections. Ensure proper usage of the session's lifecycle.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> close</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;font-style:italic;">self</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Close the session pool and release all resources.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> This method closes the underlying session pool, ensuring that all</span></span> |
| <span class="line"><span style="color:#98C379;"> resources associated with it are properly released.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> Notes:</span></span> |
| <span class="line"><span style="color:#98C379;"> After calling this method, the session pool cannot be used to retrieve</span></span> |
| <span class="line"><span style="color:#98C379;"> new sessions, and any attempt to do so may raise an exception.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-2-tablesessionpoolconfig" tabindex="-1"><a class="header-anchor" href="#_3-2-tablesessionpoolconfig"><span>3.2 TableSessionPoolConfig</span></a></h3><h4 id="_3-2-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_3-2-1-功能描述"><span>3.2.1 功能描述</span></a></h4><p>TableSessionPoolConfig是一个配置类,用于设置和创建 TableSessionPool 实例。它定义了初始化和管理 IoTDB 数据库会话池所需的参数。</p><h4 id="_3-2-2-配置选项" tabindex="-1"><a class="header-anchor" href="#_3-2-2-配置选项"><span>3.2.2 配置选项</span></a></h4><table><thead><tr><th><strong>配置项</strong></th><th><strong>描述</strong></th><th><strong>类型</strong></th><th><strong>默认值</strong></th></tr></thead><tbody><tr><td>node_urls</td><td>数据库连接的节点 URL 列表</td><td>list</td><td>None</td></tr><tr><td>max_pool_size</td><td>会话池中的最大会话数</td><td>int</td><td>5</td></tr><tr><td>username</td><td>数据库连接用户名</td><td>str</td><td>Session.DEFAULT_USER</td></tr><tr><td>password</td><td>数据库连接密码</td><td>str</td><td>Session.DEFAULT_PASSWORD</td></tr><tr><td>database</td><td>要连接的目标数据库</td><td>str</td><td>None</td></tr><tr><td>fetch_size</td><td>每次查询获取的行数</td><td>int</td><td>5000</td></tr><tr><td>time_zone</td><td>会话池的默认时区</td><td>str</td><td>Session.DEFAULT_ZONE_ID</td></tr><tr><td>enable_redirection</td><td>是否启用重定向</td><td>bool</td><td>False</td></tr><tr><td>enable_compression</td><td>是否启用数据压缩</td><td>bool</td><td>False</td></tr><tr><td>wait_timeout_in_ms</td><td>等待会话可用的最大时间(毫秒)</td><td>int</td><td>10000</td></tr><tr><td>max_retry</td><td>操作的最大重试次数</td><td>int</td><td>3</td></tr></tbody></table><h4 id="_3-2-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_3-2-3-接口展示"><span>3.2.3 接口展示</span></a></h4><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#C678DD;">class</span><span style="color:#E5C07B;"> TableSessionPoolConfig</span><span style="color:#ABB2BF;">(</span><span style="color:#56B6C2;">object</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Configuration class for a TableSessionPool.</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#98C379;"> This class defines the parameters required to initialize and manage</span></span> |
| <span class="line"><span style="color:#98C379;"> a session pool for interacting with the IoTDB database.</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#C678DD;"> def</span><span style="color:#56B6C2;"> __init__</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#E5C07B;font-style:italic;"> self</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> node_urls</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">list</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> None</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> max_pool_size</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 5</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> username</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_USER</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> password</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_PASSWORD</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> database</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> None</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> fetch_size</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 5000</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> time_zone</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">str</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> Session.</span><span style="color:#D19A66;">DEFAULT_ZONE_ID</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> enable_redirection</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">bool</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> False</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> enable_compression</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">bool</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> False</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> wait_timeout_in_ms</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 10000</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#D19A66;font-style:italic;"> max_retry</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 3</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ):</span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span> |
| <span class="line"><span style="color:#98C379;"> Initialize a TableSessionPoolConfig object with the provided parameters.</span></span> |
| <span class="line"><span style="color:#98C379;"> </span></span> |
| <span class="line"><span style="color:#98C379;"> Parameters:</span></span> |
| <span class="line"><span style="color:#98C379;"> node_urls (list, optional): A list of node URLs for the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to None.</span></span> |
| <span class="line"><span style="color:#98C379;"> max_pool_size (int, optional): The maximum number of sessions in the pool.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to 5.</span></span> |
| <span class="line"><span style="color:#98C379;"> username (str, optional): The username for the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to Session.DEFAULT_USER.</span></span> |
| <span class="line"><span style="color:#98C379;"> password (str, optional): The password for the database connection.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to Session.DEFAULT_PASSWORD.</span></span> |
| <span class="line"><span style="color:#98C379;"> database (str, optional): The target database to connect to. Defaults to None.</span></span> |
| <span class="line"><span style="color:#98C379;"> fetch_size (int, optional): The number of rows to fetch per query. Defaults to 5000.</span></span> |
| <span class="line"><span style="color:#98C379;"> time_zone (str, optional): The default time zone for the session pool.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to Session.DEFAULT_ZONE_ID.</span></span> |
| <span class="line"><span style="color:#98C379;"> enable_redirection (bool, optional): Whether to enable redirection.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to False.</span></span> |
| <span class="line"><span style="color:#98C379;"> enable_compression (bool, optional): Whether to enable data compression.</span></span> |
| <span class="line"><span style="color:#98C379;"> Defaults to False.</span></span> |
| <span class="line"><span style="color:#98C379;"> wait_timeout_in_ms (int, optional): The maximum time (in milliseconds) to wait for a session</span></span> |
| <span class="line"><span style="color:#98C379;"> to become available. Defaults to 10000.</span></span> |
| <span class="line"><span style="color:#98C379;"> max_retry (int, optional): The maximum number of retry attempts for operations. Defaults to 3.</span></span> |
| <span class="line"><span style="color:#98C379;"> </span></span> |
| <span class="line"><span style="color:#98C379;"> """</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-3-ssl-连接" tabindex="-1"><a class="header-anchor" href="#_3-3-ssl-连接"><span>3.3 SSL 连接</span></a></h3><h4 id="_3-3-1-服务器端配置证书" tabindex="-1"><a class="header-anchor" href="#_3-3-1-服务器端配置证书"><span>3.3.1 服务器端配置证书</span></a></h4><p><code>conf/iotdb-system.properties</code> 配置文件中查找或添加以下配置项:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>enable_thrift_ssl=true</span></span> |
| <span class="line"><span>key_store_path=/path/to/your/server_keystore.jks</span></span> |
| <span class="line"><span>key_store_pwd=your_keystore_password</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_3-3-2-配置-python-客户端证书" tabindex="-1"><a class="header-anchor" href="#_3-3-2-配置-python-客户端证书"><span>3.3.2 配置 python 客户端证书</span></a></h4><ul><li>设置 use_ssl 为 True 以启用 SSL。</li><li>指定客户端证书路径,使用 ca_certs 参数。</li></ul><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>use_ssl = True</span></span> |
| <span class="line"><span>ca_certs = "/path/to/your/server.crt" # 或 ca_certs = "/path/to/your//ca_cert.pem"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>示例代码:使用 SSL 连接 IoTDB</strong></p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#7F848E;font-style:italic;"># Licensed to the Apache Software Foundation (ASF) under one</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># or more contributor license agreements. See the NOTICE file</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># distributed with this work for additional information</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># regarding copyright ownership. The ASF licenses this file</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># to you under the Apache License, Version 2.0 (the</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># "License"); you may not use this file except in compliance</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># with the License. You may obtain a copy of the License at</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># http://www.apache.org/licenses/LICENSE-2.0</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># Unless required by applicable law or agreed to in writing,</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># software distributed under the License is distributed on an</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># KIND, either express or implied. See the License for the</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># specific language governing permissions and limitations</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># under the License.</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.SessionPool </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> PoolConfig, SessionPool</span></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.Session </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> Session</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;">ip </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "127.0.0.1"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">port_ </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "6667"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">username_ </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "root"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">password_ </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "root"</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># Configure SSL enabled</span></span> |
| <span class="line"><span style="color:#ABB2BF;">use_ssl </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> True</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># Configure certificate path</span></span> |
| <span class="line"><span style="color:#ABB2BF;">ca_certs </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "/path/server.crt"</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> get_data</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> Session</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ip, port_, username_, password_, </span><span style="color:#E06C75;font-style:italic;">use_ssl</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">use_ssl, </span><span style="color:#E06C75;font-style:italic;">ca_certs</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">ca_certs</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">False</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"SHOW DATABASES"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> session_data_set:</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(session_data_set.</span><span style="color:#61AFEF;">get_column_names</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> session_data_set.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(session_data_set.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> get_data2</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> pool_config </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> PoolConfig</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> host</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">ip,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> port</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">port_,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> user_name</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">username_,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> password</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">password_,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> fetch_size</span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> time_zone</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">"UTC+8"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> max_retry</span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> use_ssl</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">use_ssl,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> ca_certs</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">ca_certs,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> max_pool_size </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> 5</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> wait_timeout_in_ms </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> 3000</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session_pool </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> SessionPool</span><span style="color:#ABB2BF;">(pool_config, max_pool_size, wait_timeout_in_ms)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">get_session</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"SHOW DATABASES"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> session_data_set:</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(session_data_set.</span><span style="color:#61AFEF;">get_column_names</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> session_data_set.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(session_data_set.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">put_back</span><span style="color:#ABB2BF;">(session)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">if</span><span style="color:#E06C75;"> __name__</span><span style="color:#56B6C2;"> ==</span><span style="color:#98C379;"> "__main__"</span><span style="color:#ABB2BF;">:</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> df </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> get_data</span><span style="color:#ABB2BF;">()</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_4-示例代码" tabindex="-1"><a class="header-anchor" href="#_4-示例代码"><span>4. 示例代码</span></a></h2><p>Session示例代码:<a href="https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/table_model_session_example.py" target="_blank" rel="noopener noreferrer">Session Example</a></p><p>SessionPool示例代码:<a href="https://github.com/apache/iotdb/blob/master/otdb-client/client-py/table_model_session_pool_example.py" target="_blank" rel="noopener noreferrer">SessionPool Example</a></p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-python"><span class="line"><span style="color:#7F848E;font-style:italic;"># Licensed to the Apache Software Foundation (ASF) under one</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># or more contributor license agreements. See the NOTICE file</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># distributed with this work for additional information</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># regarding copyright ownership. The ASF licenses this file</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># to you under the Apache License, Version 2.0 (the</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># "License"); you may not use this file except in compliance</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># with the License. You may obtain a copy of the License at</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># http://www.apache.org/licenses/LICENSE-2.0</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># Unless required by applicable law or agreed to in writing,</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># software distributed under the License is distributed on an</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># KIND, either express or implied. See the License for the</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># specific language governing permissions and limitations</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># under the License.</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">#</span></span> |
| <span class="line"><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> threading</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> numpy </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> np</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.table_session_pool </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> TableSessionPool, TableSessionPoolConfig</span></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.utils.IoTDBConstants </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> TSDataType</span></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.utils.NumpyTablet </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> NumpyTablet</span></span> |
| <span class="line"><span style="color:#C678DD;">from</span><span style="color:#ABB2BF;"> iotdb.utils.Tablet </span><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> ColumnType, Tablet</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> prepare_data</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"create database"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # Get a session from the pool</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">get_session</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"CREATE DATABASE IF NOT EXISTS db1"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">'USE "db1"'</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#98C379;"> "CREATE TABLE table0 (id1 string tag, attr1 string attribute, "</span></span> |
| <span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> "m1 double "</span></span> |
| <span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> "field)"</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#98C379;"> "CREATE TABLE table1 (id1 string tag, attr1 string attribute, "</span></span> |
| <span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> "m1 double "</span></span> |
| <span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> "field)"</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"now the tables are:"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # show result</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"SHOW TABLES"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> res:</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> res.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(res.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> insert_data</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;font-style:italic;">num</span><span style="color:#ABB2BF;">: </span><span style="color:#56B6C2;">int</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"insert data for table"</span><span style="color:#56B6C2;"> +</span><span style="color:#56B6C2;"> str</span><span style="color:#ABB2BF;">(num))</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # Get a session from the pool</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">get_session</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> column_names </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> [</span></span> |
| <span class="line"><span style="color:#98C379;"> "id1"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "attr1"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "m1"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ]</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> data_types </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> [</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> TSDataType.</span><span style="color:#D19A66;">STRING</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> TSDataType.</span><span style="color:#D19A66;">STRING</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> TSDataType.</span><span style="color:#D19A66;">DOUBLE</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ]</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> column_types </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> [ColumnType.</span><span style="color:#D19A66;">TAG</span><span style="color:#ABB2BF;">, ColumnType.</span><span style="color:#D19A66;">ATTRIBUTE</span><span style="color:#ABB2BF;">, ColumnType.</span><span style="color:#D19A66;">FIELD</span><span style="color:#ABB2BF;">]</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> timestamps </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> []</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> values </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> []</span></span> |
| <span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> row </span><span style="color:#C678DD;">in</span><span style="color:#56B6C2;"> range</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">15</span><span style="color:#ABB2BF;">):</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> timestamps.</span><span style="color:#61AFEF;">append</span><span style="color:#ABB2BF;">(row)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> values.</span><span style="color:#61AFEF;">append</span><span style="color:#ABB2BF;">([</span><span style="color:#98C379;">"id:"</span><span style="color:#56B6C2;"> +</span><span style="color:#56B6C2;"> str</span><span style="color:#ABB2BF;">(row), </span><span style="color:#98C379;">"attr:"</span><span style="color:#56B6C2;"> +</span><span style="color:#56B6C2;"> str</span><span style="color:#ABB2BF;">(row), row </span><span style="color:#56B6C2;">*</span><span style="color:#D19A66;"> 1.0</span><span style="color:#ABB2BF;">])</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> tablet </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> Tablet</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#98C379;"> "table"</span><span style="color:#56B6C2;"> +</span><span style="color:#56B6C2;"> str</span><span style="color:#ABB2BF;">(num), column_names, data_types, values, timestamps, column_types</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">insert</span><span style="color:#ABB2BF;">(tablet)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"FLush"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;"> np_timestamps </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> np.</span><span style="color:#61AFEF;">arange</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">15</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">30</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">dtype</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">np.</span><span style="color:#61AFEF;">dtype</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">">i8"</span><span style="color:#ABB2BF;">))</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np_values </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> [</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np.</span><span style="color:#61AFEF;">array</span><span style="color:#ABB2BF;">([</span><span style="color:#98C379;">"id:</span><span style="color:#D19A66;">{}</span><span style="color:#98C379;">"</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">format</span><span style="color:#ABB2BF;">(i) </span><span style="color:#C678DD;">for</span><span style="color:#ABB2BF;"> i </span><span style="color:#C678DD;">in</span><span style="color:#56B6C2;"> range</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">15</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">30</span><span style="color:#ABB2BF;">)]),</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np.</span><span style="color:#61AFEF;">array</span><span style="color:#ABB2BF;">([</span><span style="color:#98C379;">"attr:</span><span style="color:#D19A66;">{}</span><span style="color:#98C379;">"</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">format</span><span style="color:#ABB2BF;">(i) </span><span style="color:#C678DD;">for</span><span style="color:#ABB2BF;"> i </span><span style="color:#C678DD;">in</span><span style="color:#56B6C2;"> range</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">15</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">30</span><span style="color:#ABB2BF;">)]),</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np.</span><span style="color:#61AFEF;">linspace</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">15.0</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">29.0</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">num</span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;">15</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">dtype</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">TSDataType.</span><span style="color:#D19A66;">DOUBLE</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">np_dtype</span><span style="color:#ABB2BF;">()),</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> ]</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;"> np_tablet </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> NumpyTablet</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#98C379;"> "table"</span><span style="color:#56B6C2;"> +</span><span style="color:#56B6C2;"> str</span><span style="color:#ABB2BF;">(num),</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> column_names,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> data_types,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np_values,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> np_timestamps,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> column_types</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">column_types,</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> )</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">insert</span><span style="color:#ABB2BF;">(np_tablet)</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> query_data</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # Get a session from the pool</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">get_session</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"get data from table0"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"select * from table0"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> res:</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> res.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(res.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"get data from table1"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"select * from table1"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> res:</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> res.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(res.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </span></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # 使用分批DataFrame方式查询表数据(推荐大数据量场景)</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"get data from table0 using batch DataFrame"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"select * from table0"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> res: </span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> res.</span><span style="color:#61AFEF;">has_next_df</span><span style="color:#ABB2BF;">(): </span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(res.</span><span style="color:#61AFEF;">next_df</span><span style="color:#ABB2BF;">()) </span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#C678DD;">def</span><span style="color:#61AFEF;"> delete_data</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> session_pool.</span><span style="color:#61AFEF;">get_session</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_non_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"drop database db1"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"data has been deleted. now the databases are:"</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#C678DD;"> with</span><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">execute_query_statement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"show databases"</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> res:</span></span> |
| <span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> res.</span><span style="color:#61AFEF;">has_next</span><span style="color:#ABB2BF;">():</span></span> |
| <span class="line"><span style="color:#56B6C2;"> print</span><span style="color:#ABB2BF;">(res.</span><span style="color:#61AFEF;">next</span><span style="color:#ABB2BF;">())</span></span> |
| <span class="line"><span style="color:#ABB2BF;"> session.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"># Create a session pool</span></span> |
| <span class="line"><span style="color:#ABB2BF;">username </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "root"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">password </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "root"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">node_urls </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> [</span><span style="color:#98C379;">"127.0.0.1:6667"</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">"127.0.0.1:6668"</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">"127.0.0.1:6669"</span><span style="color:#ABB2BF;">]</span></span> |
| <span class="line"><span style="color:#ABB2BF;">fetch_size </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> 1024</span></span> |
| <span class="line"><span style="color:#ABB2BF;">database </span><span style="color:#56B6C2;">=</span><span style="color:#98C379;"> "db1"</span></span> |
| <span class="line"><span style="color:#ABB2BF;">max_pool_size </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> 5</span></span> |
| <span class="line"><span style="color:#ABB2BF;">wait_timeout_in_ms </span><span style="color:#56B6C2;">=</span><span style="color:#D19A66;"> 3000</span></span> |
| <span class="line"><span style="color:#ABB2BF;">config </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> TableSessionPoolConfig</span><span style="color:#ABB2BF;">(</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> node_urls</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">node_urls,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> username</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">username,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> password</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">password,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> database</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">database,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> max_pool_size</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">max_pool_size,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> fetch_size</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">fetch_size,</span></span> |
| <span class="line"><span style="color:#E06C75;font-style:italic;"> wait_timeout_in_ms</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">wait_timeout_in_ms,</span></span> |
| <span class="line"><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"><span style="color:#ABB2BF;">session_pool </span><span style="color:#56B6C2;">=</span><span style="color:#61AFEF;"> TableSessionPool</span><span style="color:#ABB2BF;">(config)</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#61AFEF;">prepare_data</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread1 </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> threading.</span><span style="color:#61AFEF;">Thread</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">target</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">insert_data, </span><span style="color:#E06C75;font-style:italic;">args</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">,))</span></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread2 </span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;"> threading.</span><span style="color:#61AFEF;">Thread</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">target</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">insert_data, </span><span style="color:#E06C75;font-style:italic;">args</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">,))</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread1.</span><span style="color:#61AFEF;">start</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread2.</span><span style="color:#61AFEF;">start</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread1.</span><span style="color:#61AFEF;">join</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;">insert_thread2.</span><span style="color:#61AFEF;">join</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#61AFEF;">query_data</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#61AFEF;">delete_data</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#ABB2BF;">session_pool.</span><span style="color:#61AFEF;">close</span><span style="color:#ABB2BF;">()</span></span> |
| <span class="line"><span style="color:#56B6C2;">print</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">"example is finished!"</span><span style="color:#ABB2BF;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,57)])])}const c=n(o,[["render",p]]),r=JSON.parse('{"path":"/zh/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.html","title":"Python 原生接口","lang":"zh-CN","frontmatter":{"description":"Python 原生接口 1. 使用方式 安装依赖包: 注意:请勿使用高版本客户端连接低版本服务。 2. 读写操作 2.1 TableSession 2.1.1 功能描述 TableSession是IoTDB的一个核心类,用于与IoTDB数据库进行交互。通过这个类,用户可以执行SQL语句、插入数据以及管理数据库会话。 2.1.2 方法列表 自 V2.0....","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Python 原生接口\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-04-15T10:39:00.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/zh/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"Python 原生接口"}],["meta",{"property":"og:description","content":"Python 原生接口 1. 使用方式 安装依赖包: 注意:请勿使用高版本客户端连接低版本服务。 2. 读写操作 2.1 TableSession 2.1.1 功能描述 TableSession是IoTDB的一个核心类,用于与IoTDB数据库进行交互。通过这个类,用户可以执行SQL语句、插入数据以及管理数据库会话。 2.1.2 方法列表 自 V2.0...."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-04-15T10:39:00.000Z"}],["meta",{"property":"article:modified_time","content":"2026-04-15T10:39:00.000Z"}],["link",{"rel":"alternate","hreflang":"en-us","href":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.html"}]]},"git":{"createdTime":1735900165000,"updatedTime":1776249540000,"contributors":[{"name":"W1y1r","username":"W1y1r","email":"150988475+W1y1r@users.noreply.github.com","commits":2,"url":"https://github.com/W1y1r"},{"name":"leto-b","username":"leto-b","email":"bingqian.bai@timecho.com","commits":9,"url":"https://github.com/leto-b"},{"name":"Haonan","username":"Haonan","email":"hhaonan@outlook.com","commits":1,"url":"https://github.com/Haonan"}]},"readingTime":{"minutes":8.03,"words":2409},"filePathRelative":"zh/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.md","autoDesc":true}');export{c as comp,r as data}; |