在 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 的参数化查询