Provides a field to store bytes as PostgreSQL large objects. PostgreSQL offers support for large objects, which provide stream-style access to user data that is stored in a special large-object structure. They are useful with data values too large to be manipulated conveniently as a whole.
Psycopg allows access to the large object using the
lobject
class. Objects are generated using the
connection.lobject()
factory method. Data can be retrieved either as bytes or as Unicode
strings.
Psycopg large object support efficient import/export with file
system files using the
lo_import()
and
lo_export()
libpq functions.
Changed in version 2.6: added support for large objects greated than 2GB. Note that the support is enabled only if all the following conditions are verified:
If Psycopg was built with 64 bits large objects support (i.e. the
first two contidions above are verified), the
psycopg2.__version__
constant will contain the lo64 flag. If any of the contition is not
met several lobject methods will fail if the arguments exceed 2GB.
from odoo.addons.muk_fields_lobject import fields as lobject_fields
class LargeObjectModel(models.Model):
data_content = lobject_fields.LargeObject(string="Data")
@api.multi
def data(self):
for record in self:
bytes = record.data_content
oid = record.with_context({'oid': True}).data_content
size = record.with_context({'bin_size': True}).data_content
stream = record.with_context({'stream': True}).data_content