LargeObject – Large Objects

class pg.LargeObject

Instances of the class LargeObject are used to handle all the requests concerning a PostgreSQL large object. These objects embed and hide all the recurring variables (object OID and connection), in the same way Connection instances do, thus only keeping significant parameters in function calls. The LargeObject instance keeps a reference to the Connection object used for its creation, sending requests through with its parameters. Any modification other than dereferencing the Connection object will thus affect the LargeObject instance. Dereferencing the initial Connection object is not a problem since Python won’t deallocate it before the LargeObject instance dereferences it. All functions return a generic error message on error. The exact error message is provided by the object’s error attribute.

See also the PostgreSQL documentation for more information about the large object interface.

open – open a large object

LargeObject.open(mode)

Open a large object

Parameters:

mode (int) – open mode definition

Return type:

None

Raises:
  • TypeError – invalid connection, bad parameter type, or too many parameters

  • IOError – already opened object, or open error

This method opens a large object for reading/writing, in a similar manner as the Unix open() function does for files. The mode value can be obtained by OR-ing the constants defined in the pg module (INV_READ, INV_WRITE).

close – close a large object

LargeObject.close()

Close a large object

Return type:

None

Raises:
  • TypeError – invalid connection

  • TypeError – too many parameters

  • IOError – object is not opened, or close error

This method closes a previously opened large object, in a similar manner as the Unix close() function.

size – get the large object size

LargeObject.size()

Return the large object size

Returns:

the large object size

Return type:

int

Raises:
  • TypeError – invalid connection or invalid object

  • TypeError – too many parameters

  • IOError – object is not opened, or seek/tell error

This (composite) method returns the size of a large object. It was implemented because this function is very useful for a web interfaced database. Currently, the large object needs to be opened first.

export – save a large object to a file

LargeObject.export(name)

Export a large object to a file

Parameters:

name (str) – file to be created

Return type:

None

Raises:
  • TypeError – invalid connection or invalid object, bad parameter type, or too many parameters

  • IOError – object is not closed, or export error

This methods allows saving the content of a large object to a file in a very simple way. The file is created on the host running the PyGreSQL interface, not on the server host.

Object attributes

LargeObject objects define a read-only set of attributes exposing some information about it. These attributes are:

LargeObject.oid

the OID associated with the large object (int)

LargeObject.pgcnx

the Connection object associated with the large object

LargeObject.error

the last warning/error message of the connection (str)

Warning

In multi-threaded environments, LargeObject.error may be modified by another thread using the same Connection. Remember these objects are shared, not duplicated. You should provide some locking if you want to use this information in a program in which it’s shared between multiple threads. The LargeObject.oid attribute is very interesting, because it allows you to reuse the OID later, creating the LargeObject object with a Connection.getlo() method call.