pETL无法将数据加载到MySQL DB

时间:2017-04-11 21:00:51

标签: python mysql sqlalchemy petl

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

我的db连接器是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

时也会发生此错误

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

由于

1 个答案:

答案 0 :(得分:0)

显然问题是PETL使用的引号样式。 如果您运行:

cur.execute('SET SQL_MODE=ANSI_QUOTES')

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