我尝试将csv文件导入数据库。但它失败了。
# -*- coding: utf-8 -*-
import MySQLdb
class Database:
def __init__(self):
self.host = 'localhost'
self.user = 'root'
self.port = 3306
self.password = 'root'
self.db = 'test'
self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db, self.port, local_infile = 1)
self.cursor = self.connection.cursor()
def insert_csv_test(self):
query = "LOAD DATA LOCAL INFILE ‘/Users/ankr/Desktop/output’ INTO TABLE details FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’"
self.cursor.execute(query)
self.connection.commit()
self.connection.close()
print("Done")
def close_connection(self):
self.connection.close()
database = Database()
database.__init__()
database.insert_csv_test()
database.close_connection()
失败了。见下文。
回溯(最近一次呼叫最后):文件" test.py",第30行,in database.insert_csv_test()文件" test.py",第20行,在insert_csv_test中 self.cursor.execute(query)File" /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/MySQLdb/cursors.py" , 202行,执行中 self.errorhandler(self,exc,value)File" /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/MySQLdb/connections.py 34 ;, 第36行,在defaulterrorhandler中 提出错误类,错误值 _mysql_exceptions.ProgrammingError:(1064,"您的SQL语法有错误;请查看与您的MySQL服务器对应的手册 正确使用near语法的版本 ' \ xe2 \ x80 \ x98 / Users / ankr / Desktop / output \ xe2 \ x80 \ x99 INTO TABLE详细信息 字段终止于\ xe2 \ x80 \ x98,\ xe2 \ x80 \ x99 LI'在第1行")
任何帮助都将不胜感激。
答案 0 :(得分:1)
这可能是一个小小的天真答案,但我认为问题在于‘
字符。它被解释为UTF-8角色。尝试使用常规单引号替换它 - '
。
答案 1 :(得分:1)
看起来你至少在通话中遇到了问题。您将连接到数据库两次:
database = Database()
database.__init__()
你应该跑:
database = Database()
你应该使用\'在SQL查询中(不是'),因为你想避免直接解释它们在另一条评论中已经提到过。