+++ /dev/null
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/Attic/pygresql.sgml,v 1.10 2003/04/07 01:29:25 petere Exp $ -->
-
-<chapter id="pygresql">
- <title><application>PyGreSQL</application> - <application>Python</application> Interface</title>
-
- <note>
- <title>Author</title>
- <para>
- Written by D'Arcy J.M. Cain (<email>darcy@druid.net</email>).
- Based heavily on code written by Pascal Andre
- <email>andre@chimay.via.ecp.fr</email>. Copyright © 1995,
- Pascal Andre. Further modifications Copyright © 1997-2000 by
- D'Arcy J.M. Cain.
- </para>
- </note>
-
-
-<![IGNORE[
- <sect1 id="pygresql-install">
- <title>Installation</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Note that if you are using the <acronym>DB-API</acronym> module
- you must also install <literal>mxDateTime</literal> from <ulink
- url="http://starship.python.net/~lemburg/mxDateTime.html"
- >http://starship.python.net/~lemburg/mxDateTime.html</ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Also, check out <filename>setup.py</filename> for an alternate
- method of installing the package using <application>Python</application>'s Distutils.
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- You have two options. You can compile
- <application>PyGreSQL</application> as a stand-alone module or you
- can build it into the <application>Python</application>
- interpreter.
- </para>
-
- <sect2>
- <title>General</title>
-
- <itemizedlist>
- <listitem>
- <para>
- You must first have installed <application>Python</application>
- and <productname>PostgreSQL</productname> on your system. The
- header files and developer's libraries for both
- <application>Python</application> and
- <productname>PostgreSQL</productname> must be installed on your
- system before you can build <application>PyGreSQL</application>.
- If you built both <application>Python</application> and
- <productname>PostgreSQL</productname> from source, you should be
- fine. If your system uses some package mechanism (such as
- <acronym>RPM</acronym> or <systemitem class="osname">NetBSD</systemitem> packages),
- then you probably need to install packages such as
- <application>Python-devel</application> in addition to the
- <application>Python</application> package.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>PyGreSQL</application> is implemented as three
- parts, a C module labeled <literal>_pg</literal> and two
- <application>Python</application> wrappers called
- <filename>pg.py</filename> and <filename>pgdb.py</filename>.
- This changed between 2.1 and 2.2 and again in 3.0. These
- changes should not affect any existing programs but the
- installation is slightly different.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Download and unpack the <application>PyGreSQL</application>
- tarball if you haven't already done so.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Stand-alone</title>
-
- <itemizedlist>
- <listitem>
- <para>
- In the directory containing <filename>pgmodule.c</filename>, run
- the following command
-
-<programlisting>
-cc -fpic -shared -o _pg.so -I[pyInc] -I[pgInc] -L[pgLib] -lpq pgmodule.c
-</programlisting>
-
- where:
- <itemizedlist>
- <listitem>
- <para>
- [pyInc] = path of the <application>Python</application>
- include (usually <filename>Python.h</filename>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- [pgInc] = path of the <productname>PostgreSQL</productname>
- include (usually <filename>postgres.h</filename>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- [pgLib] = path of the <productname>PostgreSQL</productname>
- libraries (usually <filename>libpq.so</filename> or
- <filename>libpq.a</filename>)
- </para>
- </listitem>
- </itemizedlist>
-
- Some options may be added to this line:
- <itemizedlist>
- <listitem>
- <para>
- <option>-DNO_DEF_VAR</option> - no default variables
- support
- </para>
- </listitem>
-
- <listitem>
- <para>
- <option>-DNO_DIRECT</option> - no direct access methods
- </para>
- </listitem>
-
- <listitem>
- <para>
- <option>-DNO_LARGE</option> - no large object support
- </para>
- </listitem>
-
- <listitem>
- <para>
- <option>-DNO_SNPRINTF</option> - if running a system with
- no snprintf call
- </para>
- </listitem>
-
- <listitem>
- <para>
- <option>-DNO_PQSOCKET</option> - if running an older
- <productname>PostgreSQL</productname>
- </para>
- </listitem>
- </itemizedlist>
-
- On some systems you may need to include
- <option>-lcrypt</option> in the list of libraries to make it
- compile.
-
- Define <option>DNO_PQSOCKET</option> if you are using a
- version of <productname>PostgreSQL</productname> before 6.4 that
- does not have the <function>PQsocket</function> function. The
- other options will be described in the next sections.
- </para>
- </listitem>
- <listitem>
-
- <para>
- Test the new module. Something like the following should work.
-<screen>
-<prompt>$</prompt> <userinput>python</userinput>
-
-<prompt>>>></prompt> <userinput>import _pg</userinput>
-<prompt>>>></prompt> <userinput>db = _pg.connect('thilo', 'localhost')</userinput>
-<prompt>>>></prompt> <userinput>db.query("INSERT INTO test VALUES ('ping', 'pong');")</userinput>
-18304
-<prompt>>>></prompt> <userinput>db.query("SELECT * FROM test;")</userinput>
- eins | zwei
-------+------
- ping | pong
-(1 row)
-</screen>
- </para>
- </listitem>
- <listitem>
- <para>
- Finally, move the <filename>_pg.so</filename>,
- <filename>pg.py</filename>, and <filename>pgdb.py</filename>
- to a directory in your <envar>PYTHONPATH</envar>.
- A good place would be
- <filename>/usr/lib/python1.5/site-python</filename>
- if your <application>Python</application> modules are in
- <filename>/usr/lib/python1.5</filename>.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-
-
- <sect2>
- <title>Built-in to python interpreter</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Find the directory where your <filename>Setup</filename>
- file lives (usually <filename>??/Modules</filename>) in
- the <application>Python</application> source hierarchy and
- copy or symlink the <filename>pgmodule.c</filename> file there.
- </para>
- </listitem>
- <listitem>
- <para>
- Add the following line to your <filename>Setup</> file
-<programlisting>
-_pg pgmodule.c -I[pgInc] -L[pgLib] -lpq # -lcrypt # needed on some systems
-</programlisting>
- where:
- <itemizedlist>
- <listitem>
- <para>
- [pgInc] = path of the <productname>PostgreSQL</productname>
- include (usually <filename>postgres.h</filename>)
- </para>
- </listitem>
- <listitem>
- <para>
- [pgLib] = path of the <productname>PostgreSQL</productname>
- libraries (usually <filename>libpq.so</filename>
- or <filename>libpq.a</filename>)
- </para>
- </listitem>
- </itemizedlist>
- Some options may be added to this line:
- <itemizedlist>
- <listitem>
- <para>
- <option>-DNO_DEF_VAR</option> - no default variables
- support
- </para>
- </listitem>
- <listitem>
- <para>
- <option>-DNO_DIRECT</option> - no direct access methods
- </para>
- </listitem>
- <listitem>
- <para>
- <option>-DNO_LARGE</option> - no large object support
- </para>
- </listitem>
- <listitem>
- <para>
- <option>-DNO_SNPRINTF</option> - if running a system with
- no snprintf call
- </para>
- </listitem>
- <listitem>
- <para>
- <option>-DNO_PQSOCKET</option> - if running an older
- <productname>PostgreSQL</productname>
- </para>
- </listitem>
- </itemizedlist>
-
- Define <option>-DNO_PQSOCKET</option> if you are using a version of
- <productname>PostgreSQL</productname> before 6.4
- that does not have the <function>PQsocket</function> function.
- The other options will be described in the next sections.
- </para>
- </listitem>
- <listitem>
- <para>
- If you want a shared module, make sure that the
- <literal>*shared*</literal> key word is uncommented and
- add the above line below it. You used to need to install
- your shared modules with <literal>make sharedinstall</> but this no
- longer seems to be true.
- </para>
- </listitem>
- <listitem>
- <para>
- Copy <filename>pg.py</filename> to the lib directory where
- the rest of your modules are. For example, that's
- <filename>/usr/local/lib/Python</filename> on my system.
- </para>
- </listitem>
- <listitem>
- <para>
- Rebuild <application>Python</application> from the root
- directory of the <application>Python</application> source
- hierarchy by running
-<programlisting>
-make -f Makefile.pre.in boot
-make && make install
-</programlisting>
- </para>
- </listitem>
- <listitem>
- <para>
- For more details read the documentation at the top of
- <filename>Makefile.pre.in</filename>
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- </sect1>
-
-]]>
-
- <para>
- You may either choose to use the old mature interface provided by
- the <literal>pg</literal> module or otherwise the newer
- <literal>pgdb</literal> interface compliant with the <ulink
- url="http://www.python.org/topics/database/DatabaseAPI-2.0.html"
- ><acronym>DB-API 2.0</acronym></ulink> specification developed by
- the <application>Python</application> <acronym>DB-SIG</acronym>.
- </para>
-
- <para>
- Here we describe only the older <literal>pg</literal>
- <acronym>API</acronym>. As long as
- <application>PyGreSQL</application> does not contain a description
- of the <acronym>DB-API</acronym> you should read about the
- <acronym>API</acronym> at <ulink
- url="http://www.python.org/topics/database/DatabaseAPI-2.0.html"
- >http://www.python.org/topics/database/DatabaseAPI-2.0.html</ulink>.
- A tutorial-like introduction to the <acronym>DB-API</acronym> can be
- found at <ulink
- url="http://www2.linuxjournal.com/lj-issues/issue49/2605.html"
- >http://www2.linuxjournal.com/lj-issues/issue49/2605.html</ulink>.
- </para>
-
- <sect1 id="pygresql-pg">
- <title>The <literal>pg</literal> Module</title>
-
- <para>
- The <literal>pg</literal> module defines three objects:
- <itemizedlist>
- <listitem>
- <para>
- <classname>pgobject</classname>, which handles the connection and all the
- requests to the database,
- </para>
- </listitem>
-
- <listitem>
- <para>
- <classname>pglargeobject</classname>, which handles all the accesses
- to <productname>PostgreSQL</productname> large objects, and
- </para>
- </listitem>
-
- <listitem>
- <para>
- <classname>pgqueryobject</classname>, which handles query results.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- If you want to see a simple example of the use this module,
- see <ulink url="http://www.druid.net/rides"></ulink> where you can find a link at the
- bottom to the actual <application>Python</application> code for the
- page.
- </para>
-
- <sect2>
- <title>Constants</title>
-
- <para>
- Some constants are defined in the <literal>pg</literal> module
- dictionary. They are intended to be used as a parameters for
- methods calls. You should refer to the <application>libpq</application>
- description (<xref linkend="libpq">) for more information about
- them. These constants are:
-
- <variablelist>
- <varlistentry>
- <term><varname>INV_READ</varname></term>
- <term><varname>INV_WRITE</varname></term>
- <listitem>
- <para>
- Large objects access modes, used by
- <function>(pgobject.)locreate</function> and
- <function>(pglarge.)open</function>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>SEEK_SET</varname></term>
- <term><varname>SEEK_CUR</varname></term>
- <term><varname>SEEK_END</varname></term>
- <listitem>
- <para>
- Positional flags, used by <function>(pglarge.)seek</function>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>version</varname></term>
- <term><varname>__version__</varname></term>
- <listitem>
- <para>
- Constants that give the current version
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="pygresql-pg-functions">
- <title><literal>pg</literal> Module Functions</title>
-
- <para>
- <literal>pg</literal> module defines only a few methods that allow
- to connect to a database and to define <quote>default
- variables</quote> that override the environment variables used by
- <productname>PostgreSQL</productname>.
- </para>
-
- <para>
- These <quote>default variables</quote> were designed to allow you
- to handle general connection parameters without heavy code in your
- programs. You can prompt the user for a value, put it in the
- default variable, and forget it, without having to modify your
- environment. The support for default variables can be disabled at build time by
- setting the <option>-DNO_DEF_VAR</option> option in the Python
- <filename>Setup</> file. Methods relative to this are specified by the tag [DV].
- </para>
-
- <para>
- All default values are set to <symbol>None</symbol> at module
- initialization, specifying that standard environment variables
- should be used.
- </para>
-
- <refentry id="pygresql-connect">
- <refmeta>
- <refentrytitle>connect</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>connect</refname>
- <refpurpose>open a connection to the database server</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-connect(<optional><parameter>dbname</parameter></optional>, <optional><parameter>host</parameter></optional>, <optional><parameter>port</parameter></optional>, <optional><parameter>opt</parameter></optional>, <optional><parameter>tty</parameter></optional>, <optional><parameter>user</parameter></optional>, <optional><parameter>passwd</parameter></optional>)
-</synopsis>
-
- <refsect2 id="pygresql-connect-parameters">
- <title>Parameters</title>
-
- <variablelist>
- <varlistentry>
- <term><parameter>dbname</parameter></term>
-
- <listitem>
- <para>Name of connected database (string/<symbol>None</>)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>host</parameter></term>
-
- <listitem>
- <para>Name of the server host (string/<symbol>None</>)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>port</parameter></term>
-
- <listitem>
- <para>Port used by the database server (integer/-1)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>opt</parameter></term>
-
- <listitem>
- <para>
- Options for the server (string/<symbol>None</>)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>tty</parameter></term>
-
- <listitem>
- <para>
- File or TTY for optional debug output from server
- (string/<symbol>None</>)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>user</parameter></term>
-
- <listitem>
- <para>
- <productname>PostgreSQL</productname> user (string/<symbol>None</>)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><parameter>passwd</parameter></term>
-
- <listitem>
- <para>Password for user (string/<symbol>None</>)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="pygresql-connect-return">
- <title>Return Type</title>
-
- <variablelist>
- <varlistentry>
- <term><parameter>pgobject</parameter></term>
-
- <listitem>
- <para>
- If successful, an object handling a database connection is returned.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="pygresql-connect-exceptions">
- <title>Exceptions</title>
-
- <variablelist>
- <varlistentry>
- <term><classname>TypeError</classname></term>
-
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><classname>SyntaxError</classname></term>
-
- <listitem>
- <para>
- Duplicate argument definition.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><classname>pg.error</classname></term>
-
- <listitem>
- <para>
- Some error occurred during <literal>pg</> connection definition.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>
- (plus all exceptions relative to object allocation)
- </para>
- </refsect2>
- </refsynopsisdiv>
-
- <refsect1 id="pygresql-connect-description">
- <title>Description</title>
-
- <para>
- This method opens a connection to a specified database on a given
- <productname>PostgreSQL</productname> server. The arguments can be
- given using key words here. The names of the
- key words are the name of the parameters given in the syntax
- line. For a precise description of the parameters, please refer
- to <xref linkend="libpq">.
- </para>
- </refsect1>
-
- <refsect1 id="pygresql-connect-examples">
- <title>Examples</title>
-
- <para>
-<programlisting>
-import pg
-
-con1 = pg.connect('testdb', 'myhost', 5432, None, None, 'bob', None)
-con2 = pg.connect(dbname='testdb', host='localhost', user='bob')
-</programlisting>
- </para>
- </refsect1>
-
- </refentry>
-
-
- <refentry id="pygresql-get-defhost">
- <refmeta>
- <refentrytitle>get_defhost</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>get_defhost</refname>
- <refpurpose>get default host name [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_defhost()
-</synopsis>
-
- <refsect2 id="pygresql-get-defhost-parameters">
- <title>Parameters</title>
-
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="pygresql-get-defhost-return">
- <title>Return Type</title>
-
- <variablelist>
- <varlistentry>
- <term>string or <symbol>None</></term>
-
- <listitem>
- <para>
- Default host specification
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="pygresql-get-defhost-exceptions">
- <title>Exceptions</title>
-
- <variablelist>
- <varlistentry>
- <term><classname>SyntaxError</classname></term>
-
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="pygresql-get-defhost-description">
- <title>Description</title>
-
- <para>
- <function>get_defhost()</function> returns the current default
- host specification, or <symbol>None</> if the environment variables should
- be used. Environment variables will not be looked up.
- </para>
- </refsect1>
-
- </refentry>
-
-
- <refentry id="pygresql-set-defhost">
- <refmeta>
- <refentrytitle>set_defhost</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>set_defhost</refname>
- <refpurpose>set default host name [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-set_defhost(<parameter>host</parameter>)
-</synopsis>
-
- <refsect2 id="pygresql-set-defhost-parameters">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>host</parameter>
- </term>
- <listitem>
- <para>New default host (string/<symbol>None</>).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="pygresql-set-defhost-return">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</>
- </term>
- <listitem>
- <para>
- Previous default host specification.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="pygresql-set-defhost-exceptions">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="pygresql-set-defhost-description">
- <title>Description</title>
- <para>
- <function>set_defhost()</function> sets the default host value
- for new connections. If <symbol>None</symbol> is supplied as parameter, environment
- variables will be used in future connections. It returns the
- previous setting for default host.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="pygresql-get-defport">
- <refmeta>
- <refentrytitle>get_defport</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_defport</refname>
- <refpurpose>get default port [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_defport()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFPORT-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFPORT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Default port specification
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFPORT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GET-DEFPORT-1">
- <title>Description</title>
- <para>
- <function>get_defport()</function> returns the current default
- port specification, or <symbol>None</symbol> if the environment variables should
- be used. Environment variables will not be looked up.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-SET-DEFPORT">
- <refmeta>
- <refentrytitle>set_defport</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>set_defport</refname>
- <refpurpose>set default port [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-set_defport(<parameter>port</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFPORT-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>port</parameter>
- </term>
- <listitem>
- <para>New default host (integer/-1).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFPORT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Previous default port specification.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFPORT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-SET-DEFPORT-1">
- <title>Description</title>
- <para>
- <function>set_defport()</function> sets the default port value
- for new connections. If -1 is supplied as parameter, environment
- variables will be used in future connections. It returns the
- previous setting for default port.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GET-DEFOPT">
- <refmeta>
- <refentrytitle>get_defopt</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_defopt</refname>
- <refpurpose>get default options specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_defopt()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFOPT-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFOPT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Default options specification
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFOPT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GET-DEFOPT-1">
- <title>Description</title>
- <para>
- <function>get_defopt()</function> returns the current default
- connection options specification, or <symbol>None</symbol> if the environment variables should
- be used. Environment variables will not be looked up.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-SET-DEFOPT">
- <refmeta>
- <refentrytitle>set_defopt</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>set_defopt</refname>
- <refpurpose>set default options specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-set_defopt(<parameter>options</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFOPT-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>options</parameter>
- </term>
- <listitem>
- <para>New default connection options (string/<symbol>None</symbol>).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFOPT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Previous default opt specification.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFOPT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-SET-DEFOPT-1">
- <title>Description</title>
- <para>
- <function>set_defopt()</function> sets the default connection options value
- for new connections. If <symbol>None</symbol> is supplied as parameter, environment
- variables will be used in future connections. It returns the
- previous setting for default options.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GET-DEFTTY">
- <refmeta>
- <refentrytitle>get_deftty</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_deftty</refname>
- <refpurpose>get default connection debug terminal specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_deftty()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFTTY-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFTTY-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Default debug terminal specification
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFTTY-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GET-DEFTTY-1">
- <title>Description</title>
- <para>
- <function>get_deftty()</function> returns the current default
- debug terminal specification, or <symbol>None</symbol> if the environment variables should
- be used. Environment variables will not be looked up.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-SET-DEFTTY">
- <refmeta>
- <refentrytitle>set_deftty</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>set_deftty</refname>
- <refpurpose>set default connection debug terminal specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-set_deftty(<parameter>terminal</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFTTY-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>terminal</parameter>
- </term>
- <listitem>
- <para>New default debug terminal (string/<symbol>None</symbol>).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFTTY-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Previous default debug terminal specification.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFTTY-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-SET-DEFTTY-1">
- <title>Description</title>
- <para>
- <function>set_deftty()</function> sets the default terminal value
- for new connections. If <symbol>None</symbol> is supplied as parameter, environment
- variables will be used in future connections. It returns the
- previous setting for default terminal.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GET-DEFBASE">
- <refmeta>
- <refentrytitle>get_defbase</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_defbase</refname>
- <refpurpose>get default database name specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_defbase()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFBASE-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFBASE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Default debug database name specification
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GET-DEFBASE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GET-DEFBASE-1">
- <title>Description</title>
- <para>
- <function>get_defbase()</function> returns the current default
- database name specification, or <symbol>None</symbol> if the environment variables should
- be used. Environment variables will not be looked up.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-SET-DEFBASE">
- <refmeta>
- <refentrytitle>set_defbase</refentrytitle>
- <refmiscinfo>PYGRESQL - Connection Management</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>set_defbase</refname>
- <refpurpose>set default database name specification [DV]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-set_defbase(<parameter>database</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFBASE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>database</parameter>
- </term>
- <listitem>
- <para>New default database name (string/<symbol>None</symbol>).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFBASE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Previous default database name specification.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-SET-DEFBASE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-SET-DEFBASE-1">
- <title>Description</title>
- <para>
- <function>set_defbase()</function> sets the default database name
- for new connections. If <symbol>None</symbol> is supplied as parameter, environment
- variables will be used in future connections. It returns the
- previous setting for default database name.
- </para>
- </refsect1>
-
- </refentry>
-
- </sect1>
-
-
- <sect1 id="pygresql-pg-pgobject">
- <title>Connection Object: <classname>pgobject</classname></title>
-
- <para>
- This object handles a connection to the
- <productname>PostgreSQL</productname> database. It embeds and
- hides all the parameters that define this connection, leaving just
- really significant parameters in function calls.
- </para>
-
- <para>
- Some methods give direct access to the connection socket. They are
- specified by the tag [DA]. <emphasis>Do not use them unless you
- really know what you are doing.</emphasis> If you prefer disabling
- them, set the <option>-DNO_DIRECT</option> option in the
- <application>Python</application> <filename>Setup</filename> file.
- </para>
-
- <para>
- Some other methods give access to large objects. if you want to
- forbid access to these from the module, set the
- <option>-DNO_LARGE</option> option in the
- <application>Python</application> <filename>Setup</filename> file.
- These methods are specified by the tag [LO].
- </para>
-
- <para>
- Every <classname>pgobject</classname> defines a set of read-only
- attributes that describe the connection and its status. These
- attributes are:
-
- <variablelist>
- <varlistentry>
- <term>host</term>
- <listitem>
- <para>
- the host name of the server (string)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>port</term>
- <listitem>
- <para>
- the port of the server (integer)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>db</term>
- <listitem>
- <para>
- the selected database (string)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>options</term>
- <listitem>
- <para>
- the connection options (string)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>tty</term>
- <listitem>
- <para>
- the connection debug terminal (string)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>user</term>
- <listitem>
- <para>
- user name on the database system (string)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>status</term>
- <listitem>
- <para>
- the status of the connection (integer: 1 - OK, 0 - bad)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>error</term>
- <listitem>
- <para>
- the last warning/error message from the server (string)
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
-
-
- <refentry id="PYGRESQL-QUERY">
- <refmeta>
- <refentrytitle>query</refentrytitle>
- <refmiscinfo>PYGRESQL - Query</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>query</refname>
- <refpurpose>execute a SQL command</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-query(<parameter>command</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-QUERY-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>command</parameter>
- </term>
- <listitem>
- <para>SQL command (string).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-QUERY-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>pgqueryobject</> or <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Result values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-QUERY-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>ValueError</classname>
- </term>
- <listitem>
- <para>
- Empty SQL query.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Error during query processing, or invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-QUERY-1">
- <title>Description</title>
- <para>
- <function>query()</function> method sends a <acronym>SQL</acronym>
- query to the database. If the query is an insert statement, the return
- value is the <acronym>OID</acronym> of the newly inserted row.
- If it is otherwise a query that does not return a result
- (i.e., is not a some kind of <literal>SELECT</literal> statement), it returns <symbol>None</symbol>.
- Otherwise, it returns a <classname>pgqueryobject</classname> that can be accessed via the
- <function>getresult()</function> or <function>dictresult()</function>
- methods or simply printed.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-RESET">
- <refmeta>
- <refentrytitle>reset</refentrytitle>
- <refmiscinfo>PYGRESQL - Reset</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>reset</refname>
- <refpurpose>reset the connection</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-reset()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-RESET-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-RESET-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-RESET-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-RESET-1">
- <title>Description</title>
- <para>
- <function>reset()</function> method resets the current database.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-CLOSE">
- <refmeta>
- <refentrytitle>close</refentrytitle>
- <refmiscinfo>PYGRESQL - Close</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>close</refname>
- <refpurpose>close the database connection</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-close()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-CLOSE-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-CLOSE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-CLOSE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-CLOSE-1">
- <title>Description</title>
- <para>
- <function>close()</function> method closes the database connection.
- The connection will be closed in any case when the connection is deleted but this
- allows you to explicitly close it. It is mainly here to allow
- the DB-SIG API wrapper to implement a close function.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-FILENO">
- <refmeta>
- <refentrytitle>fileno</refentrytitle>
- <refmiscinfo>PYGRESQL - Fileno</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>fileno</refname>
- <refpurpose>return the socket used to connect to the database</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-fileno()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-FILENO-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-FILENO-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- socket id
- </term>
- <listitem>
- <para>
- The underlying socket id used to connect to the database.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-FILENO-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-FILENO-1">
- <title>Description</title>
- <para>
- <function>fileno()</function> method returns the underlying socket id used to connect
- to the database. This is useful for use in <function>select</function> calls, etc.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GETNOTIFY">
- <refmeta>
- <refentrytitle>getnotify</refentrytitle>
- <refmiscinfo>PYGRESQL - Getnotify</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>getnotify</refname>
- <refpurpose>get the last notify from the server</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-getnotify()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GETNOTIFY-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETNOTIFY-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- tuple, <symbol>None</symbol>
- </term>
- <listitem>
- <para>
- Last notify from server
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETNOTIFY-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GETNOTIFY-1">
- <title>Description</title>
- <para>
- <function>getnotify()</function> method tries to get a notify from
- the server (from the SQL statement <literal>NOTIFY</literal>).
- If the server returns no notify, the methods returns <symbol>None</symbol>.
- Otherwise, it returns a tuple (couple) <literal>(relname, pid)</literal>,
- where <literal>relname</literal> is the name of the notify and <literal>pid</literal>
- the process id of the connection that triggered the notify.
- Remember to do a listen query first otherwise <function>getnotify</> will always return <symbol>None</symbol>.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-INSERTTABLE">
- <refmeta>
- <refentrytitle>inserttable</refentrytitle>
- <refmiscinfo>PYGRESQL - Inserttable</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>inserttable</refname>
- <refpurpose>insert a list into a table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-inserttable(<parameter>table</parameter>, <parameter>values</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-INSERTTABLE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>The table name (string).</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <parameter>values</parameter>
- </term>
- <listitem>
- <para>The list of rows values to insert (list).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-INSERTTABLE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-INSERTTABLE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-INSERTTABLE-1">
- <title>Description</title>
- <para>
- <function>inserttable()</function> method allows to quickly
- insert large blocks of data in a table: it inserts the whole
- values list into the given table. The list is a list of
- tuples/lists that define the values for each inserted row. The
- rows values may contain string, integer, long or double (real)
- values. <emphasis>Be very careful:</emphasis> this method
- does not type-check the fields according to the table
- definition; it just look whether or not it knows how to handle
- such types.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PUTLINE">
- <refmeta>
- <refentrytitle>putline</refentrytitle>
- <refmiscinfo>PYGRESQL - Putline</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>putline</refname>
- <refpurpose>write a line to the server socket [DA]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-putline(<parameter>line</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PUTLINE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>line</parameter>
- </term>
- <listitem>
- <para>Line to be written (string).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PUTLINE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PUTLINE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PUTLINE-1">
- <title>Description</title>
- <para>
- <function>putline()</function> method allows to directly write a string to the server socket.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GETLINE">
- <refmeta>
- <refentrytitle>getline</refentrytitle>
- <refmiscinfo>PYGRESQL - Getline</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>getline</refname>
- <refpurpose>get a line from server socket [DA]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-getline()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GETLINE-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETLINE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string
- </term>
- <listitem>
- <para>
- The line read.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETLINE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GETLINE-1">
- <title>Description</title>
- <para>
- <function>getline()</function> method allows to directly read a string from the server socket.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-ENDCOPY">
- <refmeta>
- <refentrytitle>endcopy</refentrytitle>
- <refmiscinfo>PYGRESQL - Endcopy</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>endcopy</refname>
- <refpurpose>synchronize client and server [DA]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-endcopy()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-ENDCOPY-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-ENDCOPY-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-ENDCOPY-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many (any) arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-ENDCOPY-1">
- <title>Description</title>
- <para>
- The use of direct access methods may desynchronize client and server. This
- method ensure that client and server will be synchronized.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-LOCREATE">
- <refmeta>
- <refentrytitle>locreate</refentrytitle>
- <refmiscinfo>PYGRESQL - Locreate</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>locreate</refname>
- <refpurpose>create a large object in the database [LO]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-locreate(<parameter>mode</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-LOCREATE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>mode</parameter>
- </term>
- <listitem>
- <para>Large object create mode.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-LOCREATE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>pglarge</>
- </term>
- <listitem>
- <para>
- Object handling the <productname>PostgreSQL</productname> large object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-LOCREATE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection, or creation error.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-LOCREATE-1">
- <title>Description</title>
- <para>
- <function>locreate()</function> method creates a large object in the database.
- The mode can be defined by OR-ing the constants defined in the pg module
- (<literal>INV_READ</literal> and <literal>INV_WRITE</literal>).
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-GETLO">
- <refmeta>
- <refentrytitle>getlo</refentrytitle>
- <refmiscinfo>PYGRESQL - Getlo</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>getlo</refname>
- <refpurpose>build a large object from given OID [LO]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-getlo(<parameter>oid</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-GETLO-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>oid</parameter>
- </term>
- <listitem>
- <para>OID of the existing large object (integer).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETLO-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>pglarge</>
- </term>
- <listitem>
- <para>
- Object handling the <productname>PostgreSQL</productname> large object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-GETLO-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-GETLO-1">
- <title>Description</title>
- <para>
- <function>getlo()</function> method allows to reuse a formerly
- created large object through the <classname>pglarge</classname> interface, providing
- the user has its OID.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-LOIMPORT">
- <refmeta>
- <refentrytitle>loimport</refentrytitle>
- <refmiscinfo>PYGRESQL - Loimport</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>loimport</refname>
- <refpurpose>import a file to a <productname>PostgreSQL</productname> large object [LO]</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-loimport(<parameter>filename</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-LOIMPORT-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>filename</parameter>
- </term>
- <listitem>
- <para>The name of the file to be imported (string).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-LOIMPORT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>pglarge</>
- </term>
- <listitem>
- <para>
- Object handling the <productname>PostgreSQL</productname> large object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-LOIMPORT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection, or error during file import.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-LOIMPORT-1">
- <title>Description</title>
- <para>
- <function>loimport()</function> method allows to create large objects
- in a very simple way. You just give the name of a file containing the
- data to be use.
- </para>
- </refsect1>
-
- </refentry>
-
- </sect1>
-
-
- <sect1 id="pygresql-pg-DB">
- <title>Database Wrapper Class: <classname>DB</classname></title>
-
- <para>
- The <literal>pg</literal> module contains a class called
- <classname>DB</classname> wrapping a <classname>pgobject</classname>.
- This <classname>pgobject</classname> can be addressed as a
- <classname>DB</classname> class member named <varname>db</varname>
- to get access to the read-only attributes of the corresponding connection
- (e.g. <varname>db.error</varname>). All <classname>pgobject</classname>
- methods (e.g. <function>query()</function>) are directly included as members
- in the class <classname>DB</classname> also. A number of additional
- higher level <classname>DB</classname> class methods are described below.
- The preferred way to use this module is as follows (see description of the
- initialization method below):
-
-<programlisting>
-import pg
-
-db = pg.DB(...)
-
-for r in db.query(
- "SELECT foo,bar
- FROM foo_bar_table
- WHERE foo !~ bar"
- ).dictresult():
-
- print '%(foo)s %(bar)s' % r
-</programlisting>
-
- The following describes the methods and variables of this class.
- </para>
-
- <para>
- The <classname>DB</classname> class is initialized with the same
- arguments as the <function>pg.connect</function> method. It also
- initializes a few internal variables. The statement <literal>db =
- DB()</literal> will open the local database with the name of the
- user just like <function>pg.connect()</function> does.
- </para>
-
- <refentry id="PYGRESQL-DB-PKEY">
- <refmeta>
- <refentrytitle>pkey</refentrytitle>
- <refmiscinfo>PYGRESQL - Pkey</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>pkey</refname>
- <refpurpose>return the primary key of a table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-pkey(<parameter>table</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-PKEY-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- name of table.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-PKEY-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string
- </term>
- <listitem>
- <para>
- Name of field which is the primary key of the table.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-PKEY-1">
- <title>Description</title>
- <para>
- <function>pkey()</function> method returns the primary key
- of a table. Note that this raises an exception if the table
- does not have a primary key.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-GET-DATABASES">
- <refmeta>
- <refentrytitle>get_databases</refentrytitle>
- <refmiscinfo>PYGRESQL - Get_databases</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_databases</refname>
- <refpurpose>get list of databases in the system</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_databases()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-DATABASES-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-DATABASES-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- list
- </term>
- <listitem>
- <para>
- List of databases in the system.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-GET-DATABASES-1">
- <title>Description</title>
- <para>
- Although you can do this with a simple select,
- it is added here for convenience
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-GET-TABLES">
- <refmeta>
- <refentrytitle>get_tables</refentrytitle>
- <refmiscinfo>PYGRESQL - get_tables</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_tables</refname>
- <refpurpose>get list of tables in connected database</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_tables()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-TABLES-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-TABLES-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- list
- </term>
- <listitem>
- <para>
- List of tables in connected database.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-GET-TABLES-1">
- <title>Description</title>
- <para>
- Although you can do this with a simple select,
- it is added here for convenience
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-GET-ATTNAMES">
- <refmeta>
- <refentrytitle>get_attnames</refentrytitle>
- <refmiscinfo>PYGRESQL - Get_Attnames</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get_attnames</refname>
- <refpurpose>return the attribute names of a table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get_attnames(<parameter>table</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-ATTNAMES-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- name of table.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-ATTNAMES-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- dictionary
- </term>
- <listitem>
- <para>
- The dictionary's keys are
- the attribute names, the values are the type names of
- the attributes.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-GET-ATTNAMES-1">
- <title>Description</title>
- <para>
- Given the name of a table, digs out the set of attribute names
- and types.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-GET">
- <refmeta>
- <refentrytitle>get</refentrytitle>
- <refmiscinfo>PYGRESQL - Get</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>get</refname>
- <refpurpose>get a tuple from a database table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-get(<parameter>table</parameter>, <parameter>arg</parameter>, <optional><parameter>keyname</parameter></optional>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- Name of table.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <parameter>arg</parameter>
- </term>
- <listitem>
- <para>
- Either a dictionary or the value to be looked up.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <optional><parameter>keyname</parameter></optional>
- </term>
- <listitem>
- <para>
- Name of field to use as key (optional).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-GET-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- dictionary
- </term>
- <listitem>
- <para>
- A dictionary mapping attribute names to row values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-GET-1">
- <title>Description</title>
- <para>
- This method is the basic mechanism to get a single row. It assumes
- that the key specifies a unique row. If <parameter>keyname</> is not specified
- then the primary key for the table is used. If <parameter>arg</> is a dictionary
- then the value for the key is taken from it and it is modified to
- include the new values, replacing existing values where necessary.
- The OID is also put into the dictionary but in order to allow the
- caller to work with multiple tables, the attribute name is munged
- to make it unique. It consists of the string <literal>oid_</literal> followed by
- the name of the table.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-INSERT">
- <refmeta>
- <refentrytitle>insert</refentrytitle>
- <refmiscinfo>PYGRESQL - Insert</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>insert</refname>
- <refpurpose>insert a tuple into a database table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-insert(<parameter>table</parameter>, <parameter>a</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-INSERT-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- Name of table.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <parameter>a</parameter>
- </term>
- <listitem>
- <para>
- A dictionary of values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-INSERT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- The OID of the newly inserted row.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-INSERT-1">
- <title>Description</title>
- <para>
- This method inserts values into the table specified filling in the
- values from the dictionary. It then reloads the dictionary with the
- values from the database. This causes the dictionary to be updated
- with values that are modified by rules, triggers, etc.
- </para>
-
- <para>
- Due to the way that this function works you will find inserts
- taking longer and longer as your table gets bigger. To
- overcome this problem simply add an index onto the OID of any
- table that you think may get large over time.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-UPDATE">
- <refmeta>
- <refentrytitle>update</refentrytitle>
- <refmiscinfo>PYGRESQL - Update</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>update</refname>
- <refpurpose>update a database table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-update(<parameter>table</parameter>, <parameter>a</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-UPDATE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- Name of table.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <parameter>a</parameter>
- </term>
- <listitem>
- <para>
- A dictionary of values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-UPDATE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- The OID of the newly updated row.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-UPDATE-1">
- <title>Description</title>
- <para>
- Similar to insert but updates an existing row. The update is based
- on the OID value as munged by get. The array returned is the
- one sent modified to reflect any changes caused by the update due
- to triggers, rules, defaults, etc.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-CLEAR">
- <refmeta>
- <refentrytitle>clear</refentrytitle>
- <refmiscinfo>PYGRESQL - Clear</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>clear</refname>
- <refpurpose>clear a database table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-clear(<parameter>table</parameter>, <optional><parameter>a</parameter></optional>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-CLEAR-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- Name of table.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <optional><parameter>a</parameter></optional>
- </term>
- <listitem>
- <para>
- A dictionary of values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-CLEAR-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- dictionary
- </term>
- <listitem>
- <para>
- A dictionary with an empty row.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-CLEAR-1">
- <title>Description</title>
- <para>
- This method clears all the attributes to values determined by the types.
- Numeric types are set to 0, dates are set to <literal>'today'</literal> and everything
- else is set to the empty string. If the array argument is present,
- it is used as the array and any entries matching attribute names
- are cleared with everything else left unchanged.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-DB-DELETE">
- <refmeta>
- <refentrytitle>delete</refentrytitle>
- <refmiscinfo>PYGRESQL - Delete</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>delete</refname>
- <refpurpose>delete a row from a table</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-delete(<parameter>table</parameter>, <optional><parameter>a</parameter></optional>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-DB-DELETE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>table</parameter>
- </term>
- <listitem>
- <para>
- Name of table.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <optional><parameter>a</parameter></optional>
- </term>
- <listitem>
- <para>
- A dictionary of values.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-DB-DELETE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-DB-DELETE-1">
- <title>Description</title>
- <para>
- This method deletes the row from a table. It deletes based on the OID
- as munged as described above.
- </para>
- </refsect1>
-
- </refentry>
-
- <!-- ********************************************************** -->
-
- </sect1>
-
- <!-- ********************************************************** -->
- <!-- ********************************************************** -->
-
- <sect1 id="pygresql-pg-pgqueryobject">
- <title>Query Result Object: <classname>pgqueryobject</classname></title>
-
- <!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-GETRESULT">
- <refmeta>
- <refentrytitle>getresult</refentrytitle>
- <refmiscinfo>PYGRESQL - Getresult</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>getresult</refname>
- <refpurpose>get the values returned by the query</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-getresult()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-GETRESULT-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-GETRESULT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- list
- </term>
- <listitem>
- <para>
- List of tuples.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-GETRESULT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid previous result.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-GETRESULT-1">
- <title>Description</title>
- <para>
- <function>getresult()</function> method returns the list of the values returned by the query.
- More information about this result may be accessed using <function>listfields</function>,
- <function>fieldname</function> and <function>fieldnum</function> methods.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-DICTRESULT">
- <refmeta>
- <refentrytitle>dictresult</refentrytitle>
- <refmiscinfo>PYGRESQL - Dictresult</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>dictresult</refname>
- <refpurpose>get the values returned by the query as a list of dictionaries</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-dictresult()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-DICTRESULT-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-DICTRESULT-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- list
- </term>
- <listitem>
- <para>
- List of dictionaries.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-DICTRESULT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid previous result.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-DICTRESULT-1">
- <title>Description</title>
- <para>
- <function>dictresult()</function> method returns the list of the values returned by the query
- with each tuple returned as a dictionary with the field names
- used as the dictionary index.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-LISTFIELDS">
- <refmeta>
- <refentrytitle>listfields</refentrytitle>
- <refmiscinfo>PYGRESQL - Listfields</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>listfields</refname>
- <refpurpose>list the fields names of the query result</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-listfields()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-LISTFIELDS-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-LISTFIELDS-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- list
- </term>
- <listitem>
- <para>
- field names
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-LISTFIELDS-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid query result, or invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-LISTFIELDS-1">
- <title>Description</title>
- <para>
- <function>listfields()</function> method returns the list of field names defined for the
- query result. The fields are in the same order as the result values.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-FIELDNAME">
- <refmeta>
- <refentrytitle>fieldname</refentrytitle>
- <refmiscinfo>PYGRESQL - Fieldname</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>fieldname</refname>
- <refpurpose>get field name by number</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-fieldname(<parameter>i</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNAME-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>i</parameter>
- </term>
- <listitem>
- <para>
- field number (integer).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNAME-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string
- </term>
- <listitem>
- <para>
- field name.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNAME-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>ValueError</classname>
- </term>
- <listitem>
- <para>
- Invalid field number.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid query result, or invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-FIELDNAME-1">
- <title>Description</title>
- <para>
- <function>fieldname()</function> method allows to find a field name from its rank number. It can be
- useful for displaying a result. The fields are in the same order than the
- result values.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-FIELDNUM">
- <refmeta>
- <refentrytitle>fieldnum</refentrytitle>
- <refmiscinfo>PYGRESQL - Fieldnum</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>fieldnum</refname>
- <refpurpose>get field number by name</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-fieldnum(<parameter>name</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNUM-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>name</parameter>
- </term>
- <listitem>
- <para>
- field name (string).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNUM-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- field number (integer).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-FIELDNUM-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>ValueError</classname>
- </term>
- <listitem>
- <para>
- Unknown field name.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid query result, or invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-FIELDNUM-1">
- <title>Description</title>
- <para>
- <function>fieldnum()</function> method returns a field number from its name.
- It can be used to build a function that converts result list strings to their correct
- type, using a hardcoded table definition. The number returned is the
- field rank in the result values list.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGQUERYOBJECT-NTUPLES">
- <refmeta>
- <refentrytitle>ntuples</refentrytitle>
- <refmiscinfo>PYGRESQL - Ntuples</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>ntuples</refname>
- <refpurpose>return the number of tuples in query object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-ntuples()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-NTUPLES-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-NTUPLES-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- The number of tuples in query object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGQUERYOBJECT-NTUPLES-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGQUERYOBJECT-NTUPLES-1">
- <title>Description</title>
- <para>
- <function>ntuples()</function> method returns the number of tuples found in a query.
- </para>
- </refsect1>
-
- </refentry>
-
- </sect1>
-
-
- <sect1 id="pygresql-pg-pglarge">
- <title>Large Object: <classname>pglarge</classname></title>
-
- <para>
- This object handles all the request concerning a
- <productname>PostgreSQL</productname> large object. It embeds and
- hides all the <quote>recurrent</quote> variables (object OID and
- connection), exactly in the same way
- <classname>pgobject</classname>s do, thus only keeping significant
- parameters in function calls. It keeps a reference to the <classname>pgobject</classname>
- used for its creation, sending requests though with its
- parameters. Any modification but dereferencing the
- <classname>pgobject</classname> will thus affect the
- <classname>pglarge</classname> object. Dereferencing the initial
- <classname>pgobject</classname> is not a problem since
- <application>Python</application> will not deallocate it before the
- large object dereference it. All functions return a generic error
- message on call error, whatever the exact error was. The
- <structfield>error</structfield> attribute of the object allows to
- get the exact error message.
- </para>
-
- <para>
- <classname>pglarge</classname> objects define a read-only set of
- attributes that allow to get some information about it. These
- attributes are:
-
- <variablelist>
- <varlistentry>
- <term><structfield>oid</></term>
- <listitem>
- <para>
- the OID associated with the object
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><structfield>pgcnx</></term>
- <listitem>
- <para>
- the <classname>pgobject</classname> associated with the object
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><structfield>error</></term>
- <listitem>
- <para>
- the last warning/error message of the connection
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <important>
- <para>
- In multithreaded environments, <structfield>error</structfield>
- may be modified by another thread using the same
- <classname>pgobject</classname>. Remember that these object are
- shared, not duplicated; you should provide some locking if you
- want to check for the error message in this situation. The OID
- attribute is very interesting because it allow you to reuse the
- OID later, creating the <classname>pglarge</classname> object
- with a <classname>pgobject</classname>
- <function>getlo()</function> method call.
- </para>
- </important>
- </para>
-
- <para>
- See also <xref linkend="largeobjects"> for more information about the
- <productname>PostgreSQL</productname> large object interface.
- </para>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-OPEN">
- <refmeta>
- <refentrytitle>open</refentrytitle>
- <refmiscinfo>PYGRESQL - Open</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>open</refname>
- <refpurpose>open a large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-open(<parameter>mode</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-OPEN-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>mode</parameter>
- </term>
- <listitem>
- <para>
- open mode definition (integer).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-OPEN-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-OPEN-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Already opened object, or open error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-OPEN-1">
- <title>Description</title>
- <para>
- <function>open()</function> method opens a large object for reading/writing,
- in the same way than the Unix <function>open()</function>
- function. The mode value can be obtained by OR-ing the constants defined in
- the pg module (<literal>INV_READ</literal>, <literal>INV_WRITE</literal>).
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-CLOSE">
- <refmeta>
- <refentrytitle>close</refentrytitle>
- <refmiscinfo>PYGRESQL - Close</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>close</refname>
- <refpurpose>close the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-close()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-CLOSE-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-CLOSE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-CLOSE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or close error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-CLOSE-1">
- <title>Description</title>
- <para>
- <function>close()</function> method closes previously opened large object,
- in the same way than the Unix <function>close()</function> function.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-READ">
- <refmeta>
- <refentrytitle>read</refentrytitle>
- <refmiscinfo>PYGRESQL - Read</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>read</refname>
- <refpurpose>read from the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-read(<parameter>size</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-READ-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>size</parameter>
- </term>
- <listitem>
- <para>
- Maximal size of the buffer to be read (integer).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-READ-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- string
- </term>
- <listitem>
- <para>
- The read buffer.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-READ-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or read error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-READ-1">
- <title>Description</title>
- <para>
- <function>read()</function> method allows to read data from the large object,
- starting at current position.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-WRITE">
- <refmeta>
- <refentrytitle>write</refentrytitle>
- <refmiscinfo>PYGRESQL - Write</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>write</refname>
- <refpurpose>write to the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-write(<parameter>string</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-WRITE-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>string</parameter>
- </term>
- <listitem>
- <para>
- Buffer to be written (string).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-WRITE-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-WRITE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or write error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-WRITE-1">
- <title>Description</title>
- <para>
- <function>write()</function> method allows to write data to the large object,
- starting at current position.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-SEEK">
- <refmeta>
- <refentrytitle>seek</refentrytitle>
- <refmiscinfo>PYGRESQL - Seek</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>seek</refname>
- <refpurpose>change current position in the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-seek(<parameter>offset</parameter>, <parameter>whence</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SEEK-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>offset</parameter>
- </term>
- <listitem>
- <para>
- Position offset (integer).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <parameter>whence</parameter>
- </term>
- <listitem>
- <para>
- Positional parameter (integer).
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SEEK-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- New current position in the object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SEEK-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad parameter type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or seek error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-SEEK-1">
- <title>Description</title>
- <para>
- <function>seek()</function> method allows to move the cursor position
- in the large object. The whence parameter can be obtained by OR-ing the constants defined in the
- <literal>pg</literal> module (<literal>SEEK_SET</>, <literal>SEEK_CUR</>, <literal>SEEK_END</literal>).
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-TELL">
- <refmeta>
- <refentrytitle>tell</refentrytitle>
- <refmiscinfo>PYGRESQL - Tell</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>tell</refname>
- <refpurpose>return current position in the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-tell()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-TELL-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-TELL-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- Current position in the object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-TELL-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or seek error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-TELL-1">
- <title>Description</title>
- <para>
- <function>tell()</function> method allows to get the current position in the large object.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-UNLINK">
- <refmeta>
- <refentrytitle>unlink</refentrytitle>
- <refmiscinfo>PYGRESQL - Unlink</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>unlink</refname>
- <refpurpose>delete the large object</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-unlink()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-UNLINK-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-UNLINK-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-UNLINK-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not closed, or unlink error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-UNLINK-1">
- <title>Description</title>
- <para>
- <function>unlink()</function> method unlinks (deletes) the large object.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-SIZE">
- <refmeta>
- <refentrytitle>size</refentrytitle>
- <refmiscinfo>PYGRESQL - Size</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>size</refname>
- <refpurpose>return the large object size</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-size()
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SIZE-1">
- <title>Parameters</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SIZE-2">
- <title>Return Type</title>
- <variablelist>
- <varlistentry>
- <term>
- integer
- </term>
- <listitem>
- <para>
- The large object size.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-SIZE-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>SyntaxError</classname>
- </term>
- <listitem>
- <para>
- Too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not opened, or seek/tell error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-SIZE-1">
- <title>Description</title>
- <para>
- <function>size()</function> method allows to get the size of
- the large object. It was implemented because this function
- is very useful for a WWW-interfaced database.
- Currently, the large object needs to be opened first.
- </para>
- </refsect1>
-
- </refentry>
-
-<!-- ********************************************************** -->
-
- <refentry id="PYGRESQL-PGLARGEOBJECT-EXPORT">
- <refmeta>
- <refentrytitle>export</refentrytitle>
- <refmiscinfo>PYGRESQL - Export</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>export</refname>
- <refpurpose>save the large object to file</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-<synopsis>
-export(<parameter>filename</parameter>)
-</synopsis>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-EXPORT-1">
- <title>Parameters</title>
- <variablelist>
- <varlistentry>
- <term>
- <parameter>filename</parameter>
- </term>
- <listitem>
- <para>
- The file to be created.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-EXPORT-2">
- <title>Return Type</title>
- <para>
- none
- </para>
- </refsect2>
-
- <refsect2 id="R2-PYGRESQL-PGLARGEOBJECT-EXPORT-3">
- <title>Exceptions</title>
- <variablelist>
- <varlistentry>
- <term>
- <classname>TypeError</classname>
- </term>
- <listitem>
- <para>
- Bad argument type, or too many arguments.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>IOError</classname>
- </term>
- <listitem>
- <para>
- Object is not closed, or export error.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <classname>pg.error</classname>
- </term>
- <listitem>
- <para>
- Invalid connection or invalid object.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- </refsynopsisdiv>
-
- <refsect1 id="R1-PYGRESQL-PGLARGEOBJECT-EXPORT-1">
- <title>Description</title>
- <para>
- <function>export()</function> method allows to dump the
- content of a large object in a very simple way.
- The exported file is created on the host of the program,
- not the server host.
- </para>
- </refsect1>
-
- </refentry>
-
- </sect1>
-
-</chapter>