【问题标题】:Syntax Error in Insert query while using airflow MySqlOperator使用气流 MySqlOperator 时插入查询中的语法错误
【发布时间】:2018-05-19 09:13:40
【问题描述】:

我正在使用 MySqlOperator.csv 文件加载到 mysql 表(test1 有 2 个 int 列)中,但是在插入查询时出现语法错误,下面是我正在尝试的代码

    for filename in os.listdir(path):
            if str(filename).endswith('.csv'):
                     csv_data = csv.reader(file(filename))
                     for row in csv_data:
                            sql1=("""insert into test1 values (%s,%s)""",row)
                            mysql_op = MySqlOperator(task_id='testop',
                                       sql=sql1,
                                       mysql_conn_id='hack5_id', owner='hack5',dag=dag)
                            mysql_op.run(start_date=datetime.now(), end_date=datetime(2018, 5, 21))

错误:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL 
syntax; check the manual that corresponds to your MySQL server version for 
the right syntax to use near '%s,%s)' at line 1")

请帮帮我。

【问题讨论】:

    标签: python mysql airflow


    【解决方案1】:

    尝试运行以下命令:

        for filename in os.listdir(path):
            if str(filename).endswith('.csv'):
                     csv_data = csv.reader(file(filename))
                     for row in csv_data:
                            sql1="insert into test1 values ({})".format(",".join(row))
                            mysql_op = MySqlOperator(task_id='testop',
                                       sql=sql1,
                                       mysql_conn_id='hack5_id', owner='hack5',dag=dag)
                            mysql_op.run(start_date=datetime.now(), end_date=datetime(2018, 5, 21))
    

    【讨论】:

      【解决方案2】:

      谢谢,@kaxil,我在上面试过了,你的代码和我的代码都给出了同样的错误, 实际上它正在构建的查询就像

      insert into test1 values (['7', '8']),
      

      按原样填充列表,我们可以看到错误的插入语法。 所以我修改了插入语句如下

      sql1="insert into test1 values ({})".format(",".join(row))
      

      正在构建查询

      insert into test1 values (7, 8)
      

      并且插入没有错误。

      【讨论】:

      • 很高兴它在某些时候有所帮助。谢谢,我已经更新了我的答案以反映这一点。
      猜你喜欢
      • 2021-09-20
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多