python attributeerror nonetype_Python - AttributeError:'NoneType' object没有属性'execute'

我正在尝试运行一个登录到Amazon Redshift DB然后执行SQL命令的python脚本 . 我使用名为Airflow的工具进行工作流管理 . 运行以下代码时,我可以正常登录到数据库但是在尝试执行SQL命令时会出现以下错误 .

**AttributeError: 'NoneType' object has no attribute 'execute'**

Code:

## Login to DB

def db_log(**kwargs):

global db_con

try:

db_con = psycopg2.connect(

" dbname = 'name' user = 'user' password = 'pass' host = 'host' port = '5439'")

except:

print("I am unable to connect")

print('Connection Task Complete')

task_instance = kwargs['task_instance']

task_instance.xcom_push(key="dwh_connection" , value = "dwh_connection")

return (dwh_connection)

def insert_data(**kwargs):

task_instance = kwargs['task_instance']

db_con_xcom = task_instance.xcom_pull(key="dwh_connection", task_ids='DWH_Connect')

cur = db_con_xcom

cur.execute("""insert into tbl_1 select limit 2 ;""")

任何人都可以帮我解决这个问题谢谢..

完整代码:

## Third party Library Imports

import pandas as pd

import psycopg2

import airflow

from airflow import DAG

from airflow.operators.python_operator import PythonOperator

from airflow.operators.bash_operator import BashOperator

from datetime import datetime, timedelta

from sqlalchemy import create_engine

import io

# Following are defaults which can be overridden later on

default_args = {

'owner': 'airflow',

'depends_on_past': False,

'start_date': datetime(2018, 5, 29, 12),

'email': ['airflow@airflow.com']

}

dag = DAG('sample1', default_args=default_args)

## Login to DB

def db_log(**kwargs):

global db_con

try:

db_con = psycopg2.connect(

" dbname = 'name' user = 'user' password = 'pass' host = 'host' port = '5439'")

except:

print("I am unable to connect")

print('Connection Task Complete')

task_instance = kwargs['task_instance']

task_instance.xcom_push(key="dwh_connection" , value = "dwh_connection")

return (dwh_connection)

t1 = PythonOperator(

task_id='DWH_Connect',

python_callable=data_warehouse_login,provide_context=True,

dag=dag)

#######################

def insert_data(**kwargs):

task_instance = kwargs['task_instance']

db_con_xcom = task_instance.xcom_pull(key="dwh_connection", task_ids='DWH_Connect')

cur = db_con_xcom

cur.execute("""insert into tbl_1 select limit 2 """)

##########################################

t2 = PythonOperator(

task_id='DWH_Connect1',

python_callable=insert_data,provide_context=True,dag=dag)

t1 >> t2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值