我正在使用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
时也会发生此错误我该如何解决/克服这个问题?
由于
答案 0 :(得分:0)
显然问题是PETL使用的引号样式。 如果您运行:
cur.execute('SET SQL_MODE=ANSI_QUOTES')
在petl sql(petl.todb()
)语句之前执行得很好。