blob: f1509fed7a96de48dd3971d9b6ef1b94bb1f1be4 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>airflow.hooks.postgres_hook &mdash; Airflow Documentation</title>
<script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<script type="text/javascript" src="../../../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../../genindex.html" />
<link rel="search" title="Search" href="../../../../search.html" />
<link rel="next" title="airflow.hooks.presto_hook" href="../presto_hook/index.html" />
<link rel="prev" title="airflow.hooks.pig_hook" href="../pig_hook/index.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-140539454-1']);
_gaq.push(['_trackPageview']);
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../../index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../macros.html">Macros reference</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../index.html">Python API Reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#operators">Operators</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../../index.html#hooks">Hooks</a><ul class="current">
<li class="toctree-l3 current"><a class="reference internal" href="../../../index.html#hooks-packages">Hooks packages</a><ul class="current">
<li class="toctree-l4 current"><a class="reference internal" href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.hooks</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../contrib/hooks/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.contrib.hooks</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#executors">Executors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#models">Models</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#core-and-community-package">Core and community package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../../privacy_notice.html">Privacy Notice</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../../index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../../index.html">Docs</a> &raquo;</li>
<li><a href="../../../index.html">Python API Reference</a> &raquo;</li>
<li><a href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.hooks</span></code></a> &raquo;</li>
<li><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.hooks.postgres_hook</span></code></li>
<li class="wy-breadcrumbs-aside">
<a href="../../../../_sources/_api/airflow/hooks/postgres_hook/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-airflow.hooks.postgres_hook">
<span id="airflow-hooks-postgres-hook"></span><h1><a class="reference internal" href="#module-airflow.hooks.postgres_hook" title="airflow.hooks.postgres_hook"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.hooks.postgres_hook</span></code></a><a class="headerlink" href="#module-airflow.hooks.postgres_hook" title="Permalink to this headline"></a></h1>
<div class="section" id="module-contents">
<h2>Module Contents<a class="headerlink" href="#module-contents" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="airflow.hooks.postgres_hook.PostgresHook">
<em class="property">class </em><code class="sig-prename descclassname">airflow.hooks.postgres_hook.</code><code class="sig-name descname">PostgresHook</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="../dbapi_hook/index.html#airflow.hooks.dbapi_hook.DbApiHook" title="airflow.hooks.dbapi_hook.DbApiHook"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.hooks.dbapi_hook.DbApiHook</span></code></a></p>
<p>Interact with Postgres.
You can specify ssl parameters in the extra field of your connection
as <code class="docutils literal notranslate"><span class="pre">{&quot;sslmode&quot;:</span> <span class="pre">&quot;require&quot;,</span> <span class="pre">&quot;sslcert&quot;:</span> <span class="pre">&quot;/path/to/cert.pem&quot;,</span> <span class="pre">etc}</span></code>.</p>
<p>Note: For Redshift, use keepalives_idle in the extra connection parameters
and set it to less than 300 seconds.</p>
<p>Note: For AWS IAM authentication, use iam in the extra connection parameters
and set it to true. Leave the password field empty. This will use the the
“aws_default” connection to get the temporary token unless you override
in extras.
extras example: <code class="docutils literal notranslate"><span class="pre">{&quot;iam&quot;:true,</span> <span class="pre">&quot;aws_conn_id&quot;:&quot;my_aws_conn&quot;}</span></code>
For Redshift, also use redshift in the extra connection parameters and
set it to true. The cluster-identifier is extracted from the beginning of
the host field, so is optional. It can however be overridden in the extra field.
extras example: <code class="docutils literal notranslate"><span class="pre">{&quot;iam&quot;:true,</span> <span class="pre">&quot;redshift&quot;:true,</span> <span class="pre">&quot;cluster-identifier&quot;:</span> <span class="pre">&quot;my_cluster_id&quot;}</span></code></p>
<dl class="attribute">
<dt id="airflow.hooks.postgres_hook.PostgresHook.conn_name_attr">
<code class="sig-name descname">conn_name_attr</code><em class="property"> = postgres_conn_id</em><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.conn_name_attr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.conn_name_attr" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.hooks.postgres_hook.PostgresHook.default_conn_name">
<code class="sig-name descname">default_conn_name</code><em class="property"> = postgres_default</em><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.default_conn_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.default_conn_name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.hooks.postgres_hook.PostgresHook.supports_autocommit">
<code class="sig-name descname">supports_autocommit</code><em class="property"> = True</em><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.supports_autocommit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.supports_autocommit" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook.get_conn">
<code class="sig-name descname">get_conn</code><span class="sig-paren">(</span><em class="sig-param">self</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.get_conn"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.get_conn" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook.copy_expert">
<code class="sig-name descname">copy_expert</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">sql</em>, <em class="sig-param">filename</em>, <em class="sig-param">open=open</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.copy_expert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.copy_expert" title="Permalink to this definition"></a></dt>
<dd><p>Executes SQL using psycopg2 copy_expert method.
Necessary to execute COPY command without access to a superuser.</p>
<p>Note: if this method is called with a “COPY FROM” statement and
the specified input file does not exist, it creates an empty
file and no data is loaded, but the operation succeeds.
So if users want to be aware when the input file does not exist,
they have to check its existence by themselves.</p>
</dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook.bulk_load">
<code class="sig-name descname">bulk_load</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">table</em>, <em class="sig-param">tmp_file</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.bulk_load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.bulk_load" title="Permalink to this definition"></a></dt>
<dd><p>Loads a tab-delimited file into a database table</p>
</dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook.bulk_dump">
<code class="sig-name descname">bulk_dump</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">table</em>, <em class="sig-param">tmp_file</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.bulk_dump"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.bulk_dump" title="Permalink to this definition"></a></dt>
<dd><p>Dumps a database table into a tab-delimited file</p>
</dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook._serialize_cell">
<em class="property">static </em><code class="sig-name descname">_serialize_cell</code><span class="sig-paren">(</span><em class="sig-param">cell</em>, <em class="sig-param">conn</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook._serialize_cell"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook._serialize_cell" title="Permalink to this definition"></a></dt>
<dd><p>Postgresql will adapt all arguments to the execute() method internally,
hence we return cell without any conversion.</p>
<p>See <a class="reference external" href="http://initd.org/psycopg/docs/advanced.html#adapting-new-types">http://initd.org/psycopg/docs/advanced.html#adapting-new-types</a> for
more information.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cell</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)"><em>object</em></a>) – The cell to insert into the table</p></li>
<li><p><strong>conn</strong> (<em>connection object</em>) – The database connection</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The cell</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p><a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)">object</a></p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="airflow.hooks.postgres_hook.PostgresHook.get_iam_token">
<code class="sig-name descname">get_iam_token</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">conn</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/hooks/postgres_hook.html#PostgresHook.get_iam_token"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.hooks.postgres_hook.PostgresHook.get_iam_token" title="Permalink to this definition"></a></dt>
<dd><p>Uses AWSHook to retrieve a temporary password to connect to Postgres
or Redshift. Port is required. If none is provided, default is used for
each service</p>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../presto_hook/index.html" class="btn btn-neutral float-right" title="airflow.hooks.presto_hook" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../pig_hook/index.html" class="btn btn-neutral float-left" title="airflow.hooks.pig_hook" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com. Check our
<a href="../../../../privacy_notice.html">Privacy Policy</a>
for more details.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
var nodes = document.documentElement.childNodes;
var i = -1;
var node;
do {
i++;
node = nodes[i]
} while(node.nodeType !== Node.ELEMENT_NODE);
node.appendChild(ga);
})();
</script>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>