将文件加载到数据库中

时间:2016-09-06 14:35:42

标签: python mysql

我正在尝试将csv文件加载到数据库中但没有成功。问题是它在我直接在mysql shell中加载查询时起作用,但是当我尝试从python代码执行时它不起作用。我使用的代码如下所示:

db = connect_to_database()
cursor = db.cursor()

q = "LOAD DATA LOCAL INFILE '/home/ubuntu/load_file.csv' INTO TABLE test_load FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
db.query(q)
cursor.execute(q)
db.commit()

它抛出的错误说:

File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 281, in query
    _mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1148, 'The used command is not allowed with this MySQL version')

当我将字符串复制到sql shell中时,它会成功加载。我不确定为什么会抛出这个错误。

1 个答案:

答案 0 :(得分:0)

所以我设法解决了这个问题。缺少的只是MySQLDB connect中的local_infile参数:

db = MySQLdb.connect(host = raw_host,user = raw_user,passwd = raw_passwd,db = raw_db,local_infile = 1)

当我添加此参数时,它按预期工作。谢谢大家为解决问题所做的努力。