0
我在开始新项目Python与MySQL。Python MySQL大容量插入错误与字符编码
我只是试图通过MySQLdb的包从CSV插入数以百万计的记录到MySQL的。
我的代码:
import pandas as pd
import MySQLdb
#Connect with MySQL
db = MySQLdb.connect('localhost','root','****','MY_DB')
cur = db.cursor()
#Reading CSV
df = pd.read_csv('/home/shankar/LAB/Python/Rough/******.csv')
for i in df.COMPANY_NAME:
i = i.replace("'","")
i = i.replace("\\","")
#i = i.encode('latin-1', 'ignore')
cur.execute("INSERT INTO polls_company (name) VALUES ('" + i + "')")
db.commit()
这段代码在某种CSV文件工作正常,但有少数中的CSV文件的问题。
错误:
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-7-aac849862588> in <module>()
13 i = i.replace("\\","")
14 #i = i.encode('latin-1', 'ignore')
---> 15 cur.execute("INSERT INTO polls_company (name) VALUES ('" + i + "')")
16 db.commit()
/home/shankar/.local/lib/python3.5/site-packages/MySQLdb/cursors.py in execute(self, query, args)
211
212 if isinstance(query, unicode):
--> 213 query = query.encode(db.unicode_literal.charset, 'surrogateescape')
214
215 res = None
UnicodeEncodeError: 'latin-1' codec can't encode character '\ufffd' in position 49: ordinal not in range(256)
这里,只发生在一些CSV文件,这个“字符编码”的问题,但我想用普通编码技术自动插入。
因为CSV文件编码为 “UTF-8”, “Latin-1的” 更多...作品
如果我使用UTF-8:然后我得到错误Latin-1的 和反之亦然
那么,有没有经营的所有类型的CSV与普通编码文件
或
任何其他办法来解决这个什么方法?
[先谢谢了...]
然后什么ABT,如果我处理多个列意味着什么? –
但此代码生成错误为“错误:未终止的字符集在位置0” –