:py:mod:`airflow.providers.google.leveldb.hooks.leveldb`
========================================================

.. py:module:: airflow.providers.google.leveldb.hooks.leveldb

.. autoapi-nested-parse::

   Hook for Level DB



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.leveldb.hooks.leveldb.LevelDBHook




Attributes
~~~~~~~~~~

.. autoapisummary::

   airflow.providers.google.leveldb.hooks.leveldb.DB_NOT_INITIALIZED_BEFORE


.. py:data:: DB_NOT_INITIALIZED_BEFORE
   :annotation: = The `get_conn` method should be called before!

   

.. py:exception:: LevelDBHookException

   Bases: :py:obj:`airflow.exceptions.AirflowException`

   Exception specific for LevelDB


.. py:class:: LevelDBHook(leveldb_conn_id = default_conn_name)

   Bases: :py:obj:`airflow.hooks.base.BaseHook`

   Plyvel Wrapper to Interact With LevelDB Database
   `LevelDB Connection Documentation <https://plyvel.readthedocs.io/en/latest/>`__

   .. py:attribute:: conn_name_attr
      :annotation: = leveldb_conn_id

      

   .. py:attribute:: default_conn_name
      :annotation: = leveldb_default

      

   .. py:attribute:: conn_type
      :annotation: = leveldb

      

   .. py:attribute:: hook_name
      :annotation: = LevelDB

      

   .. py:method:: get_conn(self, name = '/tmp/testdb/', create_if_missing = False, **kwargs)

      Creates `Plyvel DB <https://plyvel.readthedocs.io/en/latest/api.html#DB>`__

      :param name: path to create database e.g. `/tmp/testdb/`)
      :param create_if_missing: whether a new database should be created if needed
      :param kwargs: other options of creation plyvel.DB. See more in the link above.
      :returns: DB
      :rtype: plyvel.DB


   .. py:method:: close_conn(self)

      Closes connection


   .. py:method:: run(self, command, key, value = None, keys = None, values = None)

      Execute operation with leveldb

      :param command: command of plyvel(python wrap for leveldb) for DB object e.g.
          ``"put"``, ``"get"``, ``"delete"``, ``"write_batch"``.
      :param key: key for command(put,get,delete) execution(, e.g. ``b'key'``, ``b'another-key'``)
      :param value: value for command(put) execution(bytes, e.g. ``b'value'``, ``b'another-value'``)
      :param keys: keys for command(write_batch) execution(List[bytes], e.g. ``[b'key', b'another-key'])``
      :param values: values for command(write_batch) execution e.g. ``[b'value'``, ``b'another-value']``
      :returns: value from get or None
      :rtype: Optional[bytes]


   .. py:method:: put(self, key, value)

      Put a single value into a leveldb db by key

      :param key: key for put execution, e.g. ``b'key'``, ``b'another-key'``
      :param value: value for put execution e.g. ``b'value'``, ``b'another-value'``


   .. py:method:: get(self, key)

      Get a single value into a leveldb db by key

      :param key: key for get execution, e.g. ``b'key'``, ``b'another-key'``
      :returns: value of key from db.get
      :rtype: bytes


   .. py:method:: delete(self, key)

      Delete a single value in a leveldb db by key.

      :param key: key for delete execution, e.g. ``b'key'``, ``b'another-key'``


   .. py:method:: write_batch(self, keys, values)

      Write batch of values in a leveldb db by keys

      :param keys: keys for write_batch execution e.g. ``[b'key', b'another-key']``
      :param values: values for write_batch execution e.g. ``[b'value', b'another-value']``



