| import{_ as n,c as a,b as e,o as l}from"./app-pmkzp6TS.js";const o={};function t(p,s){return l(),a("div",null,[...s[0]||(s[0]=[e(`<h1 id="python-native-api" tabindex="-1"><a class="header-anchor" href="#python-native-api"><span>Python Native API</span></a></h1><p>IoTDB provides a Python native client driver and a session pool management mechanism. These tools allow developers to interact with IoTDB in a programmatic and efficient manner. Using the Python API, developers can encapsulate time-series data into objects (e.g., <code>Tablet</code>, <code>NumpyTablet</code>) and insert them into the database directly, without the need to manually construct SQL statements. For multi-threaded operations, the <code>TableSessionPool</code> is recommended to optimize resource utilization and enhance performance.</p><h2 id="_1-prerequisites" tabindex="-1"><a class="header-anchor" href="#_1-prerequisites"><span>1. Prerequisites</span></a></h2><p>To use the IoTDB Python API, install the required package using pip:</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>Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.</p><h2 id="_2-read-and-write-operations" tabindex="-1"><a class="header-anchor" href="#_2-read-and-write-operations"><span>2. Read and Write Operations</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><p><code>TableSession</code> is a core class in IoTDB, enabling users to interact with the IoTDB database. It provides methods to execute SQL statements, insert data, and manage database sessions.</p><h4 id="method-overview" tabindex="-1"><a class="header-anchor" href="#method-overview"><span>Method Overview</span></a></h4><table><thead><tr><th><strong>Method Name</strong></th><th><strong>Descripton</strong></th><th><strong>Parameter Type</strong></th><th><strong>Return Type</strong></th></tr></thead><tbody><tr><td>insert</td><td>Inserts data into the database.</td><td>tablet: <code>Union[Tablet, NumpyTablet]</code></td><td>None</td></tr><tr><td>execute_non_query_statement</td><td>Executes non-query SQL statements like DDL/DML.</td><td>sql: <code>str</code></td><td>None</td></tr><tr><td>execute_query_statement</td><td>Executes a query SQL statement and retrieves results.</td><td>sql: <code>str</code></td><td><code>SessionDataSet</code></td></tr><tr><td>close</td><td>Closes the session and releases resources.</td><td>None</td><td>None</td></tr></tbody></table><p><strong>Since V2.0.8</strong>, <code>SessionDataSet</code> provides methods for batch DataFrame retrieval to efficiently handle large-volume queries:</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;"># Batch DataFrame retrieval</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;"> # Process 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>Method Details:</strong></p><ul><li><code>has_next_df()</code>: Returns <code>True</code>/<code>False</code> indicating whether ore data exists</li><li><code>next_df()</code>: Returns a <code>DataFrame</code> or <code>None</code>. Each call returns <code>fetchSize</code> rows (default: 5000 rows, controlled by Session's <code>fetch_size</code> parameter): <ul><li>If remaining data ≥ <code>fetchSize</code>: returns <code>fetchSize</code> rows</li><li>If remaining data < <code>fetchSize</code>: returns all remaining rows</li><li>If traversal completes: returns <code>None</code></li></ul></li><li>Session validates <code>fetchSize</code> at initialization: if ≤0, resets to 5000 and logs warning: <code>fetch_size xxx is illegal, use default fetch_size 5000</code></li></ul><p><strong>Note:</strong> Avoid mixing different traversal methods (e.g., combining <code>todf()</code> with <code>next_df()</code>), which may cause unexpected errors.</p><h4 id="sample-code" tabindex="-1"><a class="header-anchor" href="#sample-code"><span>Sample Code</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;"> 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><p><code>TableSessionConfig</code> is a configuration class that sets parameters for creating a <code>TableSession</code> instance, defining essential settings for connecting to the IoTDB database.</p><h4 id="parameter-configuration" tabindex="-1"><a class="header-anchor" href="#parameter-configuration"><span>Parameter Configuration</span></a></h4><table><thead><tr><th><strong>Parameter</strong></th><th><strong>Description</strong></th><th><strong>Type</strong></th><th><strong>Default Value</strong></th></tr></thead><tbody><tr><td>node_urls</td><td>List of database node URLs.</td><td><code>list</code></td><td><code>["localhost:6667"]</code></td></tr><tr><td>username</td><td>Username for the database connection.</td><td><code>str</code></td><td><code>"root"</code></td></tr><tr><td>password</td><td>Password for the database connection.</td><td><code>str</code></td><td><code>"root"</code></td></tr><tr><td>database</td><td>Target database to connect to.</td><td><code>str</code></td><td><code>None</code></td></tr><tr><td>fetch_size</td><td>Number of rows to fetch per query.</td><td><code>int</code></td><td><code>5000</code></td></tr><tr><td>time_zone</td><td>Default session time zone.</td><td><code>str</code></td><td><code>Session.DEFAULT_ZONE_ID</code></td></tr><tr><td>enable_compression</td><td>Enable data compression.</td><td><code>bool</code></td><td><code>False</code></td></tr></tbody></table><h4 id="sample-code-1" tabindex="-1"><a class="header-anchor" href="#sample-code-1"><span>Sample Code</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>Note:</strong> After using a <code>TableSession</code>, make sure to call the <code>close</code> method to release resources.</p><h2 id="_3-session-pool" tabindex="-1"><a class="header-anchor" href="#_3-session-pool"><span>3. Session Pool</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><p><code>TableSessionPool</code> is a session pool management class designed for creating and managing <code>TableSession</code> instances. It provides functionality to retrieve sessions from the pool and close the pool when it is no longer needed.</p><h4 id="method-overview-1" tabindex="-1"><a class="header-anchor" href="#method-overview-1"><span>Method Overview</span></a></h4><table><thead><tr><th><strong>Method Name</strong></th><th><strong>Description</strong></th><th><strong>Return Type</strong></th><th><strong>Exceptions</strong></th></tr></thead><tbody><tr><td>get_session</td><td>Retrieves a new <code>TableSession</code> instance from the pool.</td><td><code>TableSession</code></td><td>None</td></tr><tr><td>close</td><td>Closes the session pool and releases all resources.</td><td>None</td><td>None</td></tr></tbody></table><h4 id="sample-code-2" tabindex="-1"><a class="header-anchor" href="#sample-code-2"><span>Sample Code</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;">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><p><code>TableSessionPoolConfig</code> is a configuration class used to define parameters for initializing and managing a <code>TableSessionPool</code> instance. It specifies the settings needed for efficient session pool management in IoTDB.</p><h4 id="parameter-configuration-1" tabindex="-1"><a class="header-anchor" href="#parameter-configuration-1"><span>Parameter Configuration</span></a></h4><table><thead><tr><th><strong>Paramater</strong></th><th><strong>Description</strong></th><th><strong>Type</strong></th><th><strong>Default Value</strong></th></tr></thead><tbody><tr><td>node_urls</td><td>List of IoTDB cluster node URLs.</td><td><code>list</code></td><td>None</td></tr><tr><td>max_pool_size</td><td>Maximum size of the session pool, i.e., the maximum number of sessions allowed in the pool.</td><td><code>int</code></td><td><code>5</code></td></tr><tr><td>username</td><td>Username for the connection.</td><td><code>str</code></td><td><code>Session.DEFAULT_USER</code></td></tr><tr><td>password</td><td>Password for the connection.</td><td><code>str</code></td><td><code>Session.DEFAULT_PASSWORD</code></td></tr><tr><td>database</td><td>Target database to connect to.</td><td><code>str</code></td><td>None</td></tr><tr><td>fetch_size</td><td>Fetch size for query results</td><td><code>int</code></td><td><code>5000</code></td></tr><tr><td>time_zone</td><td>Timezone-related <code>ZoneId</code></td><td><code>str</code></td><td><code>Session.DEFAULT_ZONE_ID</code></td></tr><tr><td>enable_redirection</td><td>Whether to enable redirection.</td><td><code>bool</code></td><td><code>False</code></td></tr><tr><td>enable_compression</td><td>Whether to enable data compression.</td><td><code>bool</code></td><td><code>False</code></td></tr><tr><td>wait_timeout_in_ms</td><td>Sets the connection timeout in milliseconds.</td><td><code>int</code></td><td><code>10000</code></td></tr><tr><td>max_retry</td><td>Maximum number of connection retry attempts.</td><td><code>int</code></td><td><code>3</code></td></tr></tbody></table><h4 id="sample-code-3" tabindex="-1"><a class="header-anchor" href="#sample-code-3"><span>Sample Code</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><p><strong>Notes:</strong></p><ul><li>Ensure that <code>TableSession</code> instances retrieved from the <code>TableSessionPool</code> are properly closed after use.</li><li>After closing the <code>TableSessionPool</code>, it will no longer be possible to retrieve new sessions.</li></ul><h3 id="_3-3-ssl-connection" tabindex="-1"><a class="header-anchor" href="#_3-3-ssl-connection"><span>3.3 SSL Connection</span></a></h3><h4 id="_3-3-1-server-certificate-configuration" tabindex="-1"><a class="header-anchor" href="#_3-3-1-server-certificate-configuration"><span>3.3.1 Server Certificate Configuration</span></a></h4><p>In the <code>conf/iotdb-system.properties</code> configuration file, locate or add the following configuration items:</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-configure-python-client-certificate" tabindex="-1"><a class="header-anchor" href="#_3-3-2-configure-python-client-certificate"><span>3.3.2 Configure Python Client Certificate</span></a></h4><ul><li>Set <code>use_ssl</code> to True to enable SSL.</li><li>Specify the client certificate path using the <code>ca_certs</code> parameter.</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>Example Code: Using SSL to Connect to 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-sample-code" tabindex="-1"><a class="header-anchor" href="#_4-sample-code"><span>4. Sample Code</span></a></h2><p><strong>Session</strong> Example: You can find the full example code at <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><strong>Session Pool</strong> Example: You can find the full example code at <a href="https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/table_model_session_pool_example.py" target="_blank" rel="noopener noreferrer">SessionPool Example</a>.</p><p>Here is an excerpt of the sample code:</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 id, 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> |
| <span class="line"><span style="color:#7F848E;font-style:italic;"> # Querying Table Data Using Batch DataFrame (Recommended for Large Datasets)</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;"> </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 class="line-number"></div></div></div>`,54)])])}const c=n(o,[["render",t]]),r=JSON.parse('{"path":"/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.html","title":"Python Native API","lang":"en-US","frontmatter":{"description":"Python Native API IoTDB provides a Python native client driver and a session pool management mechanism. These tools allow developers to interact with IoTDB in a programmatic and...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Python Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-04-15T10:39:00.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-Python-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"Python Native API"}],["meta",{"property":"og:description","content":"Python Native API IoTDB provides a Python native client driver and a session pool management mechanism. These tools allow developers to interact with IoTDB in a programmatic and..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["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":"zh-cn","href":"https://iotdb.apache.org/zh/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":10,"url":"https://github.com/leto-b"},{"name":"Haonan","username":"Haonan","email":"hhaonan@outlook.com","commits":1,"url":"https://github.com/Haonan"}]},"readingTime":{"minutes":7.42,"words":2225},"filePathRelative":"UserGuide/latest-Table/API/Programming-Python-Native-API_apache.md","autoDesc":true}');export{c as comp,r as data}; |