【问题标题】:pETL fails to load data to MySQL DBpETL 无法将数据加载到 MySQL DB
【发布时间】:2017-04-11 21:00:50
【问题描述】:

我正在使用petl package 构建从 Python 2.7 到 MySQL5.6 的 ETL 管道

我的数据库连接器是 MySQLdb (mysql-python)。

以下代码执行失败:

import MySQLdb as mdb
import petl as etl 

con = mdb.connect(host = '127.0.0.1', user = '<someuser>', passwd = '<somepass>') 
cur = con.cursor()     # get the cursor

cur.execute('DROP SCHEMA IF EXISTS petltest')
cur.execute('CREATE SCHEMA petltest')
cur.execute('USE petltest')

dat  = [{'id':1,'name':'One'},
 {'id':2,'name':'Two'},
 {'id':3,'name':'Three'}]

table =  etl.fromdicts(dat) # petl object

etl.todb(table,cur,'table',schema='petltest',create=True)

错误代码是:

ProgrammingError: (1064, '您的 SQL 语法有错误;请检查 与您的 MySQL 服务器版本相对应的手册 在 \'"table" 附近使用的语法 (\n\tid INTEGER NOT NULL, \n\tname VARCHAR(5) NOT NULL\n)\' 在第 1 行')

尝试单独创建表或运行petl.appenddb时也会出现此错误

我该如何解决/克服这个问题?

谢谢

【问题讨论】:

    标签: python mysql sqlalchemy petl


    【解决方案1】:

    显然问题在于 PETL 使用的引号样式。 如果你运行:

    cur.execute('SET SQL_MODE=ANSI_QUOTES')
    

    在 petl sql (petl.todb()) 语句之前执行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2011-01-23
      • 2013-07-25
      • 1970-01-01
      • 2022-08-22
      相关资源
      最近更新 更多