我正在使用花瓣包装构建一个从Python2.7到MySQL5.6的ETL管道
我的db连接器是MySQLdb (MySQLdb)。
以下代码无法执行:
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整数NULL,\n\tname VARCHAR(5) NULL\n‘在第1行’)
当尝试单独创建表或运行petl.appenddb时,也会发生此错误。
我如何解决它/克服这个问题?
谢谢
发布于 2017-04-12 07:54:35
很明显,问题在于衬托使用的引号风格。如果你跑:
cur.execute('SET SQL_MODE=ANSI_QUOTES')在petl sql (petl.todb())语句之前,它执行得很好。
https://stackoverflow.com/questions/43356116
复制相似问题