forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Reviewed-by: Rechenburg, Matthias <matthias.rechenburg@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
1137 lines
120 KiB
HTML
1137 lines
120 KiB
HTML
<a name="EN-US_TOPIC_0000001658895178"></a><a name="EN-US_TOPIC_0000001658895178"></a>
|
|
|
|
<h1 class="topictitle1">Using the Third-Party Function Library psycopg2 of Python to Connect to a Cluster</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11979192881918">After creating a data warehouse cluster and using the third-party function library psycopg2 to connect to the cluster, you can use Python to access GaussDB(DWS) and perform various operations on data tables.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_section5781841515252"><h4 class="sectiontitle">Preparations Before Connecting to a Cluster</h4><ul id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ul45554082154819"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li26944207154837">An EIP has been bound to the data warehouse cluster.</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li15641651154819">You have obtained the administrator username and password for logging in to the database in the data warehouse cluster.<div class="p" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p4241153345010"><a name="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li15641651154819"></a><a name="en-us_topic_0000001422799441_li15641651154819"></a>MD5 algorithms may by vulnerable to collision attacks and cannot be used for password verification. Currently, GaussDB(DWS) uses the default security design. By default, MD5 password verification is disabled, and this may cause failures of connections from open source clients. You are advised to set <strong id="EN-US_TOPIC_0000001658895178__b1883245418818">password_encryption_type</strong> to <strong id="EN-US_TOPIC_0000001658895178__b6832354684">1</strong>. For details, see "Modifying Database Parameters" in <em id="EN-US_TOPIC_0000001658895178__i14833185418810">User Guide</em>.<div class="note" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_note0736103131316"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ul10790173319391"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li079113331399">For security purposes, GaussDB(DWS) no longer uses MD5 to store password digests by default. As a result, the open-source drives and clients may fail to connect to the database. To use the MD5 algorithm used in an open-source protocol, you must modify your password policy and create a new user, or change the password of an existing user.</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li177916333394">The database stores the hash digest of passwords instead of password text. During password verification, the system compares the hash digest with the password digest sent from the client (salt operations are involved). If you change your cryptographic algorithm policy, the database cannot generate a new hash digest for your existing password. For connectivity purposes, you must manually change your password or create a new user. The new password will be encrypted using the hash algorithm and stored for authentication in the next connection.</li></ul>
|
|
</div></div>
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li21675327154819">You have obtained the public network address, including the IP address and port number in the data warehouse cluster. For details, see <a href="dws_01_0033.html">Obtaining the Cluster Connection Address</a>.</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li324310331382">You have installed the third-party function library psycopg2. Download address: <a href="https://pypi.org/project/psycopg2/" target="_blank" rel="noopener noreferrer">https://pypi.org/project/psycopg2/</a>. For details about installation and deployment, see <a href="https://www.psycopg.org/install/" target="_blank" rel="noopener noreferrer">https://www.psycopg.org/install/</a>.<div class="note" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_note776310276369"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ul1899113312362"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li14249171043715">In CentOS and Red Hat OS, run the following <strong id="EN-US_TOPIC_0000001658895178__b1732615713915">yum</strong> command:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen63001030133719"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">python</span><span class="o">-</span><span class="n">psycopg2</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li119001933173619">psycopg2 depends on the libpq dynamic library of PostgreSQL (32-bit or 64-bit version, whichever matches the psycopg2 bit version). In Linux, you can run the <strong id="EN-US_TOPIC_0000001658895178__b128091758105916">yum</strong> command and do not need to install the library. Before using psycopg2 in Windows, you need to install libpq in either of the following ways:<ul id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ul84531241123611"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li4899133113611">Install PostgreSQL and configure the libpq, ssl, and crypto dynamic libraries in the environment variable <strong id="EN-US_TOPIC_0000001658895178__b16879151715116">PATH</strong>.</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li6900113315367">Install psqlodbc and use the libpq, ssl, and crypto dynamic libraries carried by the PostgreSQL ODBC driver.</li></ul>
|
|
</li></ul>
|
|
</div></div>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_section346571443710"><h4 class="sectiontitle">Constraints</h4><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p145631431373">psycopg2 is a PostgreSQL-based client interface, and its functions are not fully supported by GaussDB(DWS). For details, see <a href="#EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_table147698595445">Table 1</a>.</p>
|
|
<div class="note" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_note6957181343811"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p39227294383">The following APIs are supported based on Python 3.8.5 and psycopg 2.9.1.</p>
|
|
</div></div>
|
|
|
|
<div class="tablenoborder"><a name="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_table147698595445"></a><a name="en-us_topic_0000001422799441_table147698595445"></a><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_table147698595445" frame="border" border="1" rules="all"><caption><b>Table 1 </b>psycopg2 APIs supported by DWS</caption><thead align="left"><tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row15912159104419"><th align="left" class="cellrowborder" valign="top" width="15.459999999999999%" id="mcps1.3.3.4.2.6.1.1"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1912135964417">Class Name</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="15.459999999999999%" id="mcps1.3.3.4.2.6.1.2"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p199129591441">Usage</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="39.18%" id="mcps1.3.3.4.2.6.1.3"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p29128596444">Function/Member Variable</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="9.28%" id="mcps1.3.3.4.2.6.1.4"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1091218598446">Yes</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="20.62%" id="mcps1.3.3.4.2.6.1.5"><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p79123597448">Remarks</p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row199127594448"><td class="cellrowborder" rowspan="39" valign="top" width="15.459999999999999%" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891245934416">connections</p>
|
|
</td>
|
|
<td class="cellrowborder" rowspan="4" valign="top" width="15.459999999999999%" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p13912195994410">basic</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="39.18%" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p291212596443">cursor(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i891295911447">name=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i139123591448">cursor_factory=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i119121759184413">scrollable=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i139121159184418">withhold=False</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="9.28%" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391265904418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="20.62%" headers="mcps1.3.3.4.2.6.1.5 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p12912165912443">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row2912175974413"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1291210599441">commit()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1391235914420">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p14913175904416">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row4913205924416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391316597447">rollback()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11913659104416">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1791316593441">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row11913155944416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1091316596445">close()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p6913559124418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p5913165984417">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row3913175964416"><td class="cellrowborder" rowspan="10" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p291365910446">Two-phase commit support methods</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p18913459114411">xid(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i17913559184413">format_id</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i9913155918443">gtrid</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1913259104420">bqual</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p7913175915443">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p149134596440">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row149131259184419"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p3913205954410">tpc_begin(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1591319594442">xid</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159131259114419">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791313591441">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1791395916441"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p891317592449">tpc_prepare()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p10913859134412">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p6913145918447">The kernel does not support explicit <strong id="EN-US_TOPIC_0000001658895178__b449513110132">PREPARE TRANSACTION</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row209130592443"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p10913159134413">tpc_commit([<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i20913759114419">xid</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1491305954410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391314597443">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1913185964415"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p8913105944419">tpc_rollback([<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1491385911440">xid</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1091415919441">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p39141559134418">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row49141759164416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p18914115913449">tpc_recover()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p291425924414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p29141359104411">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1791475914447"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p7914059144419">closed</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p79147598444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p7914185974412">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row3914195994412"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p991414593444">cancel()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p6914105994418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p139141559124412">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row149141359114418"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p5914205964419">reset()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p0914459154418">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p591445914420"><strong id="EN-US_TOPIC_0000001658895178__b1770911195136">DISCARD ALL</strong> is not supported.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row14914195911444"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17914185994420">dsn</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11914185916441">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391495916441">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1914165913448"><td class="cellrowborder" rowspan="14" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p3914175912444">Transaction control methods and attributes.</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891455913445">set_session(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1491419596447">isolation_level=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i491485944415">readonly=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i89141359184416">deferrable=None</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i39141559184410">autocommit=None</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p169141759194410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p14914559194412">The database does not support the setting of <strong id="EN-US_TOPIC_0000001658895178__b14518143581316">default_transaction_read_only</strong> in a session.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row3914135915443"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1191425924416">autocommit</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16914059204414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791475920445">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row591513595443"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p89151759154411">isolation_level</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391514592449">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11915185910442">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row29159599446"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p991535974420">readonly</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791525934412">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891535917447">The database does not support the setting of <strong id="EN-US_TOPIC_0000001658895178__b125981642141312">default_transaction_read_only</strong> in a session.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row391595934416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1291516595446">deferrable</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p109151659174420">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17915659114411">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row7915559154414"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p2915859164415">set_isolation_level(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i12915185914445">level</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p991575916440">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p39151359154412">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row14915259114418"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p49156592446">encoding</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p29154599441">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791585904417">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row991517597442"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p4915059134415">set_client_encoding(enc)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p5915135919440">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19151259114418">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row791545916449"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p2915205994410">notices</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891595919441">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1491575974411">The database does not support <strong id="EN-US_TOPIC_0000001658895178__b2030120506132">listen</strong>/<strong id="EN-US_TOPIC_0000001658895178__b3444511133">notify</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row169150594446"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891575914447">notifies</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p169151359194414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19915185994419">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1291555911449"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p10916125934416">cursor_factory</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p691611595442">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p6916125910441">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row17916159114416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p99161459194414">info</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1691619599442">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p109164594441">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row109161359154420"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1791655994416">status</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p99164597444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p8916259174420">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row16916359134410"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p291645904419">lobject</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p4916105994418">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16916165912449">The database does not support operations related to large objects.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row491685916445"><td class="cellrowborder" rowspan="3" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791615599448">Methods related to asynchronous support</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p13916759144410">poll()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159166594447">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p2916159164415">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row69161959154416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159161559194419">fileno()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p191695919444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p5916459114415">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row159164595449"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p991685964416">isexecuting()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p20916195911449">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p18916165914419">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row09161759134417"><td class="cellrowborder" rowspan="2" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p15916195954415">Interoperation with other C API modules</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p491605974410">pgconn_ptr</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1916165917443">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p09169593447">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row129161659134417"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p691716593445">get_native_connection()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p091718597444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1891705918446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row991715591446"><td class="cellrowborder" rowspan="6" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p79172059114411">informative methods of the native connection</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p4917959134413">get_transaction_status()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p99171759144410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p7917125914446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row15917105910447"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p12917959164420">protocol_version</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p119171759124418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p49171759204419">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row7917115913446"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p6917459194419">server_version</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1291775911440">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p891715914418">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row6917165912449"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391711597441">get_backend_pid()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16917115913441">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1291775919446">The obtained PID is not the background PID, but the ID of the logical connection.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row19917155913442"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p189171959144419">get_parameter_status(parameter)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1691715917448">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p591705944411">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row191715594445"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p59176591442">get_dsn_parameters()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1917125914418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19179598442">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row391745984412"><td class="cellrowborder" rowspan="31" valign="top" width="15.459999999999999%" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p12917115984415">cursor</p>
|
|
</td>
|
|
<td class="cellrowborder" rowspan="7" valign="top" width="15.459999999999999%" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p791795911443">basic</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="39.18%" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1791765915445">description</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="9.28%" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p39179596445">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="20.62%" headers="mcps1.3.3.4.2.6.1.5 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p3918115994415">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1391825934412"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p691810593448">close()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p39181590445">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p191815912448">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row4918559154418"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16918959204413">closed</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p14918859124414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11918175934417">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row18918759194414"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159181459184419">connection</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p091825904415">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p891855954418">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row991825974418"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p99181659134415">name</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p691835916440">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p49181959184412">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row109181594445"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159181659154414">scrollable</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p09183591446">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p891825934416">The database does not support <strong id="EN-US_TOPIC_0000001658895178__b858916237148">SCROLL CURSOR</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row29181959194415"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p9918175912443">withhold</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1991885918447">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1091865914445">The <strong id="EN-US_TOPIC_0000001658895178__b99090285148">withhold cursor</strong> needs to be closed before the commit operation.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1491812596441"><td class="cellrowborder" rowspan="20" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p091819593448">Commands execution methods</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p199184594441">execute(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i291835984416">query</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i491818591449">vars=None</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p18918205910444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1791845924410">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row159181559154420"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17919135915443">executemany(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i13919175913441">query</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i0919125974411">vars_list</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p8919759164411">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159190591446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row3919175917445"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1091911594447">callproc(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i3919159204418">procname</em>[, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i39197599446">parameters</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p9919115984410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p991935920446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row139197594442"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p9919259134413">mogrify(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i89191559174412">operation</em>[, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1391905915443">parameters</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17919959144418">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p139191559174411">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row391965934412"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p8919459204412">setinputsizes(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i17919155974410">sizes</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p79191959124411">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p2919165913443">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row3919135934415"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p69191592447">fetchone()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p59191859204414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1391914591446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row199191159154418"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p109195593440">fetchmany([<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1919959154417">size=cursor.arraysize</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p3919155912447">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17919105994415">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row189191359114413"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p391915593447">fetchall()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p149191159134416">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p591995913445">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1491925916444"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1192085912447">scroll(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1892065924411">value</em>[, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i992019596443">mode='relative'</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p392085910443">N</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1092085910442">The database does not support <strong id="EN-US_TOPIC_0000001658895178__b15333433101412">SCROLL CURSOR</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row49201659204416"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p0920135934417">arraysize</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1920145913444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p892095913447">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row17920959114414"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p149201459174415">itersize</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p5920959124410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1892019599447">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row159201159154419"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11920135910441">rowcount</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1692035910448">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p119201259164415">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1392005974414"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11920175954416">rownumber</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11920259114416">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p292015593443">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row13920135914449"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p8920135904415">lastrowid</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p10920159104416">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p129203598446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row99204595448"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16920195913446">query</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p199201559144413">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19920195915447">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row492010597446"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p159204592442">statusmessage</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p0920159194410">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16920175917447">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row11920759114417"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p0920155915445">cast(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i139218596448">oid</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1092145954416">s</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19211459114412">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p392118592445">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row7921659194419"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p13921105954419">tzinfo_factory</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1492145984414">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p9921205920442">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row39211959184415"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1492135904417">nextset()</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p13921135910444">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p792155904414">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row15921959194413"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p9921125917443">setoutputsize(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i6921115920442">size</em>[, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i14921125984415">column</em>])</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1792113590441">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p89219595446">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1092175910444"><td class="cellrowborder" rowspan="3" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p179216595447">COPY-related methods</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p29212596441">copy_from(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i169218592443">file</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i14921185917445">table</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i10921359174411">sep='\\t'</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i892117593442">null='\\\\N'</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i19211859154419">size=8192</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i20921259154413">columns=None</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p11921175934412">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p792117598448">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row9921115914448"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p592135934413">copy_to(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i2921155911446">file</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i492115919441">table</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i49211259184413">sep='\\t'</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i169211859114413">null='\\\\N'</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i8922145917445">columns=None</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p99222599443">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p092265920442">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row139221259154419"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1092235918447">copy_expert(<em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i199222594444">sql</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i199220591443">file</em>, <em id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_i1492255920444">size=8192</em>)</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p16922205924415">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p14922195915449">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_row1992255914445"><td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.1 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p592312599447">Interoperation with other C API modules</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.2 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p17923125924415">pgresult_ptr</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.3 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p7923135944415">Y</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" headers="mcps1.3.3.4.2.6.1.4 "><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p149235590444">-</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_section2825650154610"><h4 class="sectiontitle">Using the Third-Party Function Library psycopg2 to Connect to a Cluster (Linux)</h4><ol id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ol25430858154610"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li03081050111116"><span>Log in to the Linux environment as user <strong id="EN-US_TOPIC_0000001658895178__b62711076185045">root</strong>.</span></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li085110550268"><span>Run the following command to create the <strong id="EN-US_TOPIC_0000001658895178__b32521849614">python_dws.py</strong> file:</span><p><pre class="screen" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen9446161854818">vi python_dws.py</pre>
|
|
<p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p172204254712">Copy and paste the following content to the <strong id="EN-US_TOPIC_0000001658895178__b152832331066">python_dws.py</strong> file:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen11598141564614"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal"> 10</span>
|
|
<span class="normal"> 11</span>
|
|
<span class="normal"> 12</span>
|
|
<span class="normal"> 13</span>
|
|
<span class="normal"> 14</span>
|
|
<span class="normal"> 15</span>
|
|
<span class="normal"> 16</span>
|
|
<span class="normal"> 17</span>
|
|
<span class="normal"> 18</span>
|
|
<span class="normal"> 19</span>
|
|
<span class="normal"> 20</span>
|
|
<span class="normal"> 21</span>
|
|
<span class="normal"> 22</span>
|
|
<span class="normal"> 23</span>
|
|
<span class="normal"> 24</span>
|
|
<span class="normal"> 25</span>
|
|
<span class="normal"> 26</span>
|
|
<span class="normal"> 27</span>
|
|
<span class="normal"> 28</span>
|
|
<span class="normal"> 29</span>
|
|
<span class="normal"> 30</span>
|
|
<span class="normal"> 31</span>
|
|
<span class="normal"> 32</span>
|
|
<span class="normal"> 33</span>
|
|
<span class="normal"> 34</span>
|
|
<span class="normal"> 35</span>
|
|
<span class="normal"> 36</span>
|
|
<span class="normal"> 37</span>
|
|
<span class="normal"> 38</span>
|
|
<span class="normal"> 39</span>
|
|
<span class="normal"> 40</span>
|
|
<span class="normal"> 41</span>
|
|
<span class="normal"> 42</span>
|
|
<span class="normal"> 43</span>
|
|
<span class="normal"> 44</span>
|
|
<span class="normal"> 45</span>
|
|
<span class="normal"> 46</span>
|
|
<span class="normal"> 47</span>
|
|
<span class="normal"> 48</span>
|
|
<span class="normal"> 49</span>
|
|
<span class="normal"> 50</span>
|
|
<span class="normal"> 51</span>
|
|
<span class="normal"> 52</span>
|
|
<span class="normal"> 53</span>
|
|
<span class="normal"> 54</span>
|
|
<span class="normal"> 55</span>
|
|
<span class="normal"> 56</span>
|
|
<span class="normal"> 57</span>
|
|
<span class="normal"> 58</span>
|
|
<span class="normal"> 59</span>
|
|
<span class="normal"> 60</span>
|
|
<span class="normal"> 61</span>
|
|
<span class="normal"> 62</span>
|
|
<span class="normal"> 63</span>
|
|
<span class="normal"> 64</span>
|
|
<span class="normal"> 65</span>
|
|
<span class="normal"> 66</span>
|
|
<span class="normal"> 67</span>
|
|
<span class="normal"> 68</span>
|
|
<span class="normal"> 69</span>
|
|
<span class="normal"> 70</span>
|
|
<span class="normal"> 71</span>
|
|
<span class="normal"> 72</span>
|
|
<span class="normal"> 73</span>
|
|
<span class="normal"> 74</span>
|
|
<span class="normal"> 75</span>
|
|
<span class="normal"> 76</span>
|
|
<span class="normal"> 77</span>
|
|
<span class="normal"> 78</span>
|
|
<span class="normal"> 79</span>
|
|
<span class="normal"> 80</span>
|
|
<span class="normal"> 81</span>
|
|
<span class="normal"> 82</span>
|
|
<span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span>
|
|
<span class="normal">101</span>
|
|
<span class="normal">102</span>
|
|
<span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">#!/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">python</span>
|
|
<span class="o">#</span><span class="w"> </span><span class="o">-*-</span><span class="w"> </span><span class="n">coding</span><span class="p">:</span><span class="w"> </span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span><span class="w"> </span><span class="o">-*-</span>
|
|
<span class="w"> </span>
|
|
<span class="k">from</span><span class="w"> </span><span class="n">__future__</span><span class="w"> </span><span class="n">import</span><span class="w"> </span><span class="n">print_function</span>
|
|
<span class="w"> </span>
|
|
<span class="n">import</span><span class="w"> </span><span class="n">psycopg2</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">create_table</span><span class="p">(</span><span class="k">connection</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Begin to create table"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"drop table if exists test;"</span>
|
|
<span class="w"> </span><span class="ss">"create table test(id int, name text);"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">commit</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">ProgrammingError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">e</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Table created successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">close</span><span class="p">()</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">insert_data</span><span class="p">(</span><span class="k">connection</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Begin to insert data"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"insert into test values(1,'number1');"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"insert into test values(2,'number2');"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"insert into test values(3,'number3');"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">commit</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">ProgrammingError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">e</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Insert data successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">close</span><span class="p">()</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">update_data</span><span class="p">(</span><span class="k">connection</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Begin to update data"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"update test set name = 'numberupdated' where id=1;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">commit</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Total number of rows updated :"</span><span class="p">,</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">rowcount</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">rows</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"id = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"name = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="ss">"\n"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">ProgrammingError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">e</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"After Update, Operation done successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">delete_data</span><span class="p">(</span><span class="k">connection</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Begin to delete data"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"delete from test where id=3;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">commit</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Total number of rows deleted :"</span><span class="p">,</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">rowcount</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">rows</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"id = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"name = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="ss">"\n"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">ProgrammingError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">e</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"After Delete,Operation done successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">select_data</span><span class="p">(</span><span class="k">connection</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Begin to select data"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">rows</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"id = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"name = "</span><span class="p">,</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="ss">"\n"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">ProgrammingError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">e</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"select failed"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Operation done successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">close</span><span class="p">()</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span>
|
|
<span class="k">if</span><span class="w"> </span><span class="n">__name__</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'__main__'</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">try</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="k">connect</span><span class="p">(</span><span class="k">host</span><span class="o">=</span><span class="s1">'10.154.70.231'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">port</span><span class="o">=</span><span class="s1">'8000'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="k">database</span><span class="o">=</span><span class="s1">'gaussdb'</span><span class="p">,</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Database</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">connected</span>
|
|
<span class="w"> </span><span class="k">user</span><span class="o">=</span><span class="s1">'dbadmin'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">password</span><span class="o">=</span><span class="s1">'password'</span><span class="p">)</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Database</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="n">password</span>
|
|
<span class="w"> </span><span class="k">except</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">DatabaseError</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">ex</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">ex</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Connect database failed"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="ss">"Opened database successfully"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">create_table</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">insert_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">select_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">update_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">delete_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="k">close</span><span class="p">()</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li588916576452"><span>Change the public network address, cluster port number, database name, database username, and database password in the <strong id="EN-US_TOPIC_0000001658895178__b155512201955">python_dws.py</strong> file based on the actual cluster information.</span><p><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p85251859476">The psycopg2 API does not provide the connection retry capability. You need to implement the retry processing in the service code.</p>
|
|
<div class="codecoloring" codetype="Python" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen564514258497"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span> <span class="n">conn</span> <span class="o">=</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s1">'10.154.70.231'</span><span class="p">,</span>
|
|
<span class="n">port</span><span class="o">=</span><span class="s1">'8000'</span><span class="p">,</span>
|
|
<span class="n">database</span><span class="o">=</span><span class="s1">'gaussdb'</span><span class="p">,</span> <span class="c1"># Database to be connected</span>
|
|
<span class="n">user</span><span class="o">=</span><span class="s1">'dbadmin'</span><span class="p">,</span>
|
|
<span class="n">password</span><span class="o">=</span><span class="s1">'password'</span><span class="p">)</span> <span class="c1"># Database user password</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li14630228275"><span>Run the following command to connect to the cluster using the third-party function library psycopg:</span><p><pre class="screen" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen7708154816498">python python_dws.py</pre>
|
|
</p></li></ol>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_section79862501183"><h4 class="sectiontitle">Using the Third-Party Function Library psycopg2 to Connect to a Cluster (Windows)</h4><ol id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ol12457163604117"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li98631518101518"><span>In the Windows operating system, click the <span class="uicontrol" id="EN-US_TOPIC_0000001658895178__uicontrol28031512191920"><b>Start</b></span> button, enter <strong id="EN-US_TOPIC_0000001658895178__b1214713012194">cmd</strong> in the search box, and click <strong id="EN-US_TOPIC_0000001658895178__b1281923821912">cmd.exe</strong> in the result list to open the command-line interface (CLI).</span></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li15522115616506"><span>In the CLI, run the following command to create the <strong id="EN-US_TOPIC_0000001658895178__b1786861415719">python_dws.py</strong> file:</span><p><pre class="screen" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen17253174125014">type nul> python_dws.py</pre>
|
|
<p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1529162245019">Copy and paste the following content to the <strong id="EN-US_TOPIC_0000001658895178__b1061281718719">python_dws.py</strong> file:</p>
|
|
<div class="codecoloring" codetype="Python" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen64741236154111"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal"> 10</span>
|
|
<span class="normal"> 11</span>
|
|
<span class="normal"> 12</span>
|
|
<span class="normal"> 13</span>
|
|
<span class="normal"> 14</span>
|
|
<span class="normal"> 15</span>
|
|
<span class="normal"> 16</span>
|
|
<span class="normal"> 17</span>
|
|
<span class="normal"> 18</span>
|
|
<span class="normal"> 19</span>
|
|
<span class="normal"> 20</span>
|
|
<span class="normal"> 21</span>
|
|
<span class="normal"> 22</span>
|
|
<span class="normal"> 23</span>
|
|
<span class="normal"> 24</span>
|
|
<span class="normal"> 25</span>
|
|
<span class="normal"> 26</span>
|
|
<span class="normal"> 27</span>
|
|
<span class="normal"> 28</span>
|
|
<span class="normal"> 29</span>
|
|
<span class="normal"> 30</span>
|
|
<span class="normal"> 31</span>
|
|
<span class="normal"> 32</span>
|
|
<span class="normal"> 33</span>
|
|
<span class="normal"> 34</span>
|
|
<span class="normal"> 35</span>
|
|
<span class="normal"> 36</span>
|
|
<span class="normal"> 37</span>
|
|
<span class="normal"> 38</span>
|
|
<span class="normal"> 39</span>
|
|
<span class="normal"> 40</span>
|
|
<span class="normal"> 41</span>
|
|
<span class="normal"> 42</span>
|
|
<span class="normal"> 43</span>
|
|
<span class="normal"> 44</span>
|
|
<span class="normal"> 45</span>
|
|
<span class="normal"> 46</span>
|
|
<span class="normal"> 47</span>
|
|
<span class="normal"> 48</span>
|
|
<span class="normal"> 49</span>
|
|
<span class="normal"> 50</span>
|
|
<span class="normal"> 51</span>
|
|
<span class="normal"> 52</span>
|
|
<span class="normal"> 53</span>
|
|
<span class="normal"> 54</span>
|
|
<span class="normal"> 55</span>
|
|
<span class="normal"> 56</span>
|
|
<span class="normal"> 57</span>
|
|
<span class="normal"> 58</span>
|
|
<span class="normal"> 59</span>
|
|
<span class="normal"> 60</span>
|
|
<span class="normal"> 61</span>
|
|
<span class="normal"> 62</span>
|
|
<span class="normal"> 63</span>
|
|
<span class="normal"> 64</span>
|
|
<span class="normal"> 65</span>
|
|
<span class="normal"> 66</span>
|
|
<span class="normal"> 67</span>
|
|
<span class="normal"> 68</span>
|
|
<span class="normal"> 69</span>
|
|
<span class="normal"> 70</span>
|
|
<span class="normal"> 71</span>
|
|
<span class="normal"> 72</span>
|
|
<span class="normal"> 73</span>
|
|
<span class="normal"> 74</span>
|
|
<span class="normal"> 75</span>
|
|
<span class="normal"> 76</span>
|
|
<span class="normal"> 77</span>
|
|
<span class="normal"> 78</span>
|
|
<span class="normal"> 79</span>
|
|
<span class="normal"> 80</span>
|
|
<span class="normal"> 81</span>
|
|
<span class="normal"> 82</span>
|
|
<span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span>
|
|
<span class="normal">101</span>
|
|
<span class="normal">102</span>
|
|
<span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span></pre></div></td><td class="code"><div><pre><span></span><span class="ch">#!/usr/bin/python</span>
|
|
<span class="c1"># -*- coding:UTF-8 -*-</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">psycopg2</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">create_table</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Begin to create table"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"drop table if exists test;"</span>
|
|
<span class="s2">"create table test(id int, name text);"</span><span class="p">)</span>
|
|
<span class="n">connection</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">ProgrammingError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Table created successfully"</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">insert_data</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Begin to insert data"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"insert into test values(1,'number1');"</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"insert into test values(2,'number2');"</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"insert into test values(3,'number3');"</span><span class="p">)</span>
|
|
<span class="n">connection</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">ProgrammingError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Insert data successfully"</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">update_data</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Begin to update data"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"update test set name = 'numberupdated' where id=1;"</span><span class="p">)</span>
|
|
<span class="n">connection</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Total number of rows updated :"</span><span class="p">,</span> <span class="n">cursor</span><span class="o">.</span><span class="n">rowcount</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="n">rows</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"id = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"name = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">ProgrammingError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"After Update, Operation done successfully"</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">delete_data</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Begin to delete data"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"delete from test where id=3;"</span><span class="p">)</span>
|
|
<span class="n">connection</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Total number of rows deleted :"</span><span class="p">,</span> <span class="n">cursor</span><span class="o">.</span><span class="n">rowcount</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="n">rows</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"id = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"name = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">ProgrammingError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"After Delete,Operation done successfully"</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">select_data</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Begin to select data"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="n">rows</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"id = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"name = "</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">ProgrammingError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"select failed"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Operation done successfully"</span><span class="p">)</span>
|
|
<span class="n">cursor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
|
|
|
|
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">conn</span> <span class="o">=</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s1">'10.154.70.231'</span><span class="p">,</span>
|
|
<span class="n">port</span><span class="o">=</span><span class="s1">'8000'</span><span class="p">,</span>
|
|
<span class="n">database</span><span class="o">=</span><span class="s1">'postgresgaussdb'</span><span class="p">,</span> <span class="c1"># Database to be connected</span>
|
|
<span class="n">user</span><span class="o">=</span><span class="s1">'dbadmin'</span><span class="p">,</span>
|
|
<span class="n">password</span><span class="o">=</span><span class="s1">'password'</span><span class="p">)</span> <span class="c1"># Database user password</span>
|
|
<span class="k">except</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">DatabaseError</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">ex</span><span class="p">)</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Connect database failed"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Opened database successfully"</span><span class="p">)</span>
|
|
<span class="n">create_table</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="n">insert_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="n">select_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="n">update_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="n">delete_data</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li16531113610418"><span>Change the public network address, cluster port number, database name, database username, and database password in the <strong id="EN-US_TOPIC_0000001658895178__b1788513164717">python_dws.py</strong> file based on the actual cluster information.</span><p><div class="codecoloring" codetype="Python" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen1556618184915"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span> <span class="n">conn</span> <span class="o">=</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s1">'10.154.70.231'</span><span class="p">,</span>
|
|
<span class="n">port</span><span class="o">=</span><span class="s1">'8000'</span><span class="p">,</span>
|
|
<span class="n">database</span><span class="o">=</span><span class="s1">'gaussdb'</span><span class="p">,</span> <span class="c1"># Database to be connected</span>
|
|
<span class="n">user</span><span class="o">=</span><span class="s1">'dbadmin'</span><span class="p">,</span>
|
|
<span class="n">password</span><span class="o">=</span><span class="s1">'password'</span><span class="p">)</span> <span class="c1"># Database user password</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li13538193684120"><span>On the CLI, run the following command to use psycopg to connect to the cluster:</span><p><pre class="screen" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen462293513529">python python_dws.py</pre>
|
|
</p></li></ol>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_section9354311165719"><h4 class="sectiontitle">Why CN Retry Is Not Supported When psycopg2 Is Connected to a Cluster?</h4><p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p1250531910422">With the CN retry feature, GaussDB(DWS) retries a statement that failed to be executed and identifies the failure type. However, in a session connected using psycopg2, a failed SQL statement will report an error and stop to be executed. In a primary/standby switchover, if a failed SQL statement is not retried, the following error will be reported. If the switchover is complete during an automatic retry, the correct result will be returned.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen13655155814018"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">psycopg2</span><span class="p">.</span><span class="n">errors</span><span class="p">.</span><span class="n">ConnectionFailure</span><span class="p">:</span><span class="w"> </span><span class="n">pooler</span><span class="p">:</span><span class="w"> </span><span class="n">failed</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">create</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">connections</span><span class="p">,</span><span class="w"> </span><span class="n">Error</span><span class="w"> </span><span class="n">Message</span><span class="p">:</span><span class="w"> </span><span class="n">remote</span><span class="w"> </span><span class="n">node</span><span class="w"> </span><span class="n">dn_6003_6004</span><span class="p">,</span><span class="w"> </span><span class="n">detail</span><span class="p">:</span><span class="w"> </span><span class="n">could</span><span class="w"> </span><span class="k">not</span><span class="w"> </span><span class="k">connect</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">server</span><span class="p">:</span><span class="w"> </span><span class="k">Operation</span><span class="w"> </span><span class="n">now</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">progress</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p10437611105711"><strong id="EN-US_TOPIC_0000001658895178__b07861950191610">Error causes:</strong></p>
|
|
<ol id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ol2437141112577"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li92361321171516">psycopg2 sends the <strong id="EN-US_TOPIC_0000001658895178__b1371713576167">BEGIN</strong> statement to start a transaction before sending an SQL statement.</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li1583913220161">CN retry does not support statements in transaction blocks.</li></ol>
|
|
<p id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_p19651712157"><strong id="EN-US_TOPIC_0000001658895178__b1057214123154">Solution:</strong></p>
|
|
<ul id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_ul14379204810187"><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li637914485182">In synchronous connection mode, end the transaction started by the driver.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen4437131155715"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="o">#</span><span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">transaction</span><span class="w"> </span><span class="n">started</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">driver</span><span class="p">.</span>
|
|
<span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"end; select * from test order by 1;"</span><span class="p">)</span><span class="w"> </span>
|
|
<span class="k">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_li19379348101819">Start a transaction in an asynchronous connection. For details, visit the PyScopg official website at: <a href="https://www.psycopg.org/docs/advanced.html?highlight=async" target="_blank" rel="noopener noreferrer">https://www.psycopg.org/docs/advanced.html?highlight=async</a><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895178__en-us_topic_0000001422799441_screen2437191112575"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span>
|
|
<span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">#!/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">env</span><span class="w"> </span><span class="n">python3</span>
|
|
<span class="o">#</span><span class="w"> </span><span class="n">_</span><span class="o">*</span><span class="n">_</span><span class="w"> </span><span class="k">encoding</span><span class="o">=</span><span class="n">utf</span><span class="o">-</span><span class="mi">8</span><span class="w"> </span><span class="n">_</span><span class="o">*</span><span class="n">_</span>
|
|
<span class="w"> </span>
|
|
<span class="n">import</span><span class="w"> </span><span class="n">psycopg2</span>
|
|
<span class="n">import</span><span class="w"> </span><span class="k">select</span>
|
|
<span class="w"> </span>
|
|
<span class="o">#</span><span class="w"> </span><span class="n">Wait</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">provided</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">psycopg2</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">asynchronous</span><span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="k">mode</span>
|
|
<span class="o">#</span><span class="k">For</span><span class="w"> </span><span class="n">details</span><span class="p">,</span><span class="w"> </span><span class="n">see</span><span class="w"> </span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">psycopg</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">docs</span><span class="o">/</span><span class="n">advanced</span><span class="p">.</span><span class="n">html</span><span class="o">?</span><span class="n">highlight</span><span class="o">=</span><span class="n">async</span><span class="p">.</span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">wait</span><span class="p">(</span><span class="n">conn</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="n">while</span><span class="w"> </span><span class="k">True</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">state</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="n">poll</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="k">state</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">extensions</span><span class="p">.</span><span class="n">POLL_OK</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">break</span>
|
|
<span class="w"> </span><span class="n">elif</span><span class="w"> </span><span class="k">state</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">extensions</span><span class="p">.</span><span class="n">POLL_WRITE</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">select</span><span class="p">.</span><span class="k">select</span><span class="p">([],</span><span class="w"> </span><span class="p">[</span><span class="n">conn</span><span class="p">.</span><span class="n">fileno</span><span class="p">()],</span><span class="w"> </span><span class="p">[])</span>
|
|
<span class="w"> </span><span class="n">elif</span><span class="w"> </span><span class="k">state</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">extensions</span><span class="p">.</span><span class="n">POLL_READ</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="k">select</span><span class="p">.</span><span class="k">select</span><span class="p">([</span><span class="n">conn</span><span class="p">.</span><span class="n">fileno</span><span class="p">()],</span><span class="w"> </span><span class="p">[],</span><span class="w"> </span><span class="p">[])</span>
|
|
<span class="w"> </span><span class="k">else</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">raise</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="n">OperationalError</span><span class="p">(</span><span class="ss">"poll() returned %s"</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="k">state</span><span class="p">)</span>
|
|
<span class="w"> </span>
|
|
<span class="n">def</span><span class="w"> </span><span class="n">psycopg2_cnretry_sync</span><span class="p">():</span>
|
|
<span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Create</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span>
|
|
<span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">psycopg2</span><span class="p">.</span><span class="k">connect</span><span class="p">(</span><span class="k">host</span><span class="o">=</span><span class="s1">'10.154.70.231'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">port</span><span class="o">=</span><span class="s1">'8000'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="k">database</span><span class="o">=</span><span class="s1">'gaussdb'</span><span class="p">,</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Database</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">connected</span>
|
|
<span class="w"> </span><span class="k">user</span><span class="o">=</span><span class="s1">'dbadmin'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">password</span><span class="o">=</span><span class="s1">'password'</span><span class="p">,</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Database</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="n">password</span>
|
|
<span class="w"> </span><span class="n">async</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="n">Use</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">asynchronous</span><span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="k">mode</span><span class="p">.</span>
|
|
<span class="w"> </span><span class="n">wait</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Execute</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">query</span><span class="p">.</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="k">cursor</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="k">execute</span><span class="p">(</span><span class="ss">"select * from test order by 1;"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="n">wait</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">cursor</span><span class="p">.</span><span class="n">fetchall</span><span class="p">()</span>
|
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">rows</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="k">row</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="k">row</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
|
<span class="w"> </span>
|
|
<span class="w"> </span><span class="o">#</span><span class="w"> </span><span class="k">Close</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span>
|
|
<span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="k">close</span><span class="p">()</span>
|
|
<span class="w"> </span>
|
|
<span class="k">if</span><span class="w"> </span><span class="n">__name__</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'__main__'</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="n">psycopg2_cnretry_async</span><span class="p">()</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li></ul>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_01_0131.html">Cluster Connection</a></div>
|
|
</div>
|
|
</div>
|
|
|