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」 –