airflow-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kaxil Naik (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AIRFLOW-3355) Fix BigQueryCursor.execute to work with Python3
Date Fri, 16 Nov 2018 22:32:00 GMT

     [ https://issues.apache.org/jira/browse/AIRFLOW-3355?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Kaxil Naik resolved AIRFLOW-3355.
---------------------------------
    Resolution: Fixed

Resolved by  https://github.com/apache/incubator-airflow/pull/4198

> Fix BigQueryCursor.execute to work with Python3
> -----------------------------------------------
>
>                 Key: AIRFLOW-3355
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-3355
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: gcp, hooks
>            Reporter: Kengo Seki
>            Assignee: Kengo Seki
>            Priority: Major
>
> {{BigQueryCursor.execute}} uses {{dict.iteritems}} internally, so it fails with Python3
if binding parameters are provided.
> {code}
> In [1]: import sys
> In [2]: sys.version
> Out[2]: '3.6.6 (default, Sep 12 2018, 18:26:19) \n[GCC 8.0.1 20180414 (experimental)
[trunk revision 259383]]'
> In [3]: from airflow.contrib.hooks.bigquery_hook import BigQueryHook
> In [4]: hook = BigQueryHook()
> In [5]: conn = hook.get_conn()
> [2018-11-15 19:01:35,856] {discovery.py:267} INFO - URL being requested: GET https://www.googleapis.com/discovery/v1/apis/bigquery/v2/rest
> In [6]: cur = conn.cursor()
> In [7]: cur.execute("SELECT count(*) FROM ds.t WHERE c = %(v)d", {"v": 0})
> ---------------------------------------------------------------------------
> AttributeError                            Traceback (most recent call last)
> <ipython-input-7-54c59af50270> in <module>
> ----> 1 cur.execute("SELECT count(*) FROM ds.t WHERE c = %(v)d", {"v": 0})
> ~/dev/incubator-airflow/airflow/contrib/hooks/bigquery_hook.py in execute(self, operation,
parameters)
>    1561         """
>    1562         sql = _bind_parameters(operation,
> -> 1563                                parameters) if parameters else operation
>    1564         self.job_id = self.run_query(sql)
>    1565
> ~/dev/incubator-airflow/airflow/contrib/hooks/bigquery_hook.py in _bind_parameters(operation,
parameters)
>    1684     # inspired by MySQL Python Connector (conversion.py)
>    1685     string_parameters = {}
> -> 1686     for (name, value) in parameters.iteritems():
>    1687         if value is None:
>    1688             string_parameters[name] = 'NULL'
> AttributeError: 'dict' object has no attribute 'iteritems'
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message