在 Python 2.7 中运行 MySQL 以将 CSV 加载到 MySQL -

Posted

技术标签:

【中文标题】在 Python 2.7 中运行 MySQL 以将 CSV 加载到 MySQL -【英文标题】:Run MySQL to load CSV to MySQL in Python 2.7 - 【发布时间】:2015-09-04 09:24:02 【问题描述】:

我正在尝试使用 python 2.7 中的 mysqldb 模块将 csv 表上传到 MySQl 表中。

import MySQLdb

connection = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")

cursor = connection.cursor()
query = '''USE test; DELETE FROM test2; LOAD DATA LOCAL INFILE "C:/data/data.csv" INTO TABLE    test2 COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;'''
cursor.execute(query)

connection.close()

我已经在 phpmyadmin 上尝试过查询并且它通过了,它允许我传输所有行(不包括只是列名的顶行)但是当我尝试在 python 2.7 中运行查询时出现多个错误消息。

错误一:

语法错误:指向 ENCLOSED BY 部分的语法无效。

当我在查询周围添加 3 个单引号时,我收到一条错误消息“

错误2:

Exception _mysql_exceptions.OperationalError: (2013, '失去连接 查询期间到 MySQL 服务器') in (bound method Cursor__del__ of MySQLdb.cursors.Cursor 对象在 0x0233AAF0) 被忽略

我不知道该怎么做。我已经在一天的大部分时间里进行了研究,并尝试了不同的变化,但我一无所获。您的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

对于错误 2,不应将所有查询放在一个字符串中,而应尝试将它们拆分为多个查询并分别运行。像这样-

query1 = '''DELETE FROM test2;'''
cursor.execute(query1)
query2 = '''LOAD DATA LOCAL INFILE "C:/data/data.csv" INTO TABLE    test2 COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;'''
cursor.execute(query2)

我认为您不需要执行use test,因为在创建连接时已经使用了它。

【讨论】:

以上是关于在 Python 2.7 中运行 MySQL 以将 CSV 加载到 MySQL -的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 2.7 中使用带有 mysql.connector 的参数化查询

Python 2.7:调用 subprocess.popen 阻止文件访问

在Python 2.7中运行cURL命令

在 python 2.7 中运行 Apriori 算法

在 Python 2.7 中运行 cURL 命令

在 Django 中构建 mysql 数据库支持的 Web 应用程序(linux )