:mod:`airflow.models.variable`
==============================

.. py:module:: airflow.models.variable


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

.. py:class:: Variable

   Bases: :class:`airflow.models.base.Base`, :class:`airflow.utils.log.logging_mixin.LoggingMixin`

   .. attribute:: __tablename__
      :annotation: = variable

      

   .. attribute:: __NO_DEFAULT_SENTINEL
      

      

   .. attribute:: id
      

      

   .. attribute:: key
      

      

   .. attribute:: _val
      

      

   .. attribute:: is_encrypted
      

      

   .. attribute:: val
      

      

   
   .. method:: __repr__(self)



   
   .. method:: get_val(self)



   
   .. method:: set_val(self, value)



   
   .. classmethod:: setdefault(cls, key, default, deserialize_json=False)

      Like a Python builtin dict object, setdefault returns the current value
      for a key, and if it isn't there, stores the default value and returns it.

      :param key: Dict key for this Variable
      :type key: str
      :param default: Default value to set and return if the variable
          isn't already in the DB
      :type default: Mixed
      :param deserialize_json: Store this as a JSON encoded value in the DB
          and un-encode it when retrieving a value
      :return: Mixed



   
   .. classmethod:: get(cls, key, default_var=__NO_DEFAULT_SENTINEL, deserialize_json=False, session=None)



   
   .. classmethod:: set(cls, key, value, serialize_json=False, session=None)



   
   .. classmethod:: delete(cls, key, session=None)



   
   .. method:: rotate_fernet_key(self)




