sys.defaultencoding์ด "utf-8"๋ก ์ค์ ๋๊ณ mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ๋ ฌ๋ก utf-8์ ์ฌ์ฉํ๋๋ผ๋ SQL์ ๋ฐ์ดํฐ ํ๋ ์์ ์ฐ๋ฉด UnicodeEncodeError๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ค ์์ด๋์ด? ๊ฐ์ฌ ํด์!
UnicodeEncodeError Traceback(๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง)
----> 1 df1.to_sql(์ด๋ฆ='webshoptracks2', con=์์ง)
C:\Python27\lib\site-packages\pandas\core\generic.pyc in to_sql(self, name, con,
๋ง, ์คํค๋ง, if_exists, ์ธ๋ฑ์ค, index_label, chunksize, dtype)
980ํ
์กด์ฌํ๋ค,
981 (์ฃผ)์ธ๋(์ฃผ)
--> 982 dtype=dtype)
983
984 def to_pickle(์์ , ๊ฒฝ๋ก):
C:\Python27\lib\site-packages\pandas\io\sql.pyc in to_sql(frame, name, con, flav
or, schema, if_exists, index, index_label, chunksize, dtype)
547
548
--> 549 ์ฒญํฌ ํฌ๊ธฐ=์ฒญํฌ ํฌ๊ธฐ, dtype=dtype)
550
551
C:\Python27\lib\site-packages\pandas\io\sql.pyc in to_sql(self, frame, name, if_
์กด์ฌ, ์ธ๋ฑ์ค, index_label, ์คํค๋ง, ์ฒญํฌ ํฌ๊ธฐ, dtype)
1186 (์ฃผ)
1187ํ
-> 1188 table.insert(์ฒญํฌ ํฌ๊ธฐ)
1189 # ์ ์ฌ์ ์ธ ๋์๋ฌธ์ ๊ตฌ๋ถ ๋ฌธ์ ํ์ธ(GH7815)
1190 if name is not in self.engine.table_names(schema=schema or self.met
์คํค๋ง):
C:\Python27\lib\site-packages\pandas\io\sql.pyc in insert(self, chunksize)
726
727*
์ฑ])
--> 728 self._execute_insert(conn, ํค, chunk_iter)
729
730ํ
ํํ,
C:\Python27\lib\site-packages\pandas\io\sql.pyc in _execute_insert(self, conn, k
eys, data_iter)
701ํ
702 ๋ฐ์ดํฐ = [dict((k, v) k, v zip(keys, row))
๋ฐ๋ณต]
--> 703 conn.execute(self.insert_statement(), ๋ฐ์ดํฐ)
704
705ํ
C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc in execute(self, object
, _multiparams, *_params)
912 ์ ํ(์ค๋ธ์ ํธ))
913 ๊ธฐํ:
--> 914 return meth(self, multiparams, params)
915
916ํ
_execute_on_connect์ C:\Python27\lib\site-packages\sqlalchemy\sql\elements.pyc
ion(self, connection, multiparams, params)
321
322ํ
--> 323 return connection._execute_clauseelement(self, multiparams, para
ms)
324
325ํ
C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc _execute_clauseeleme
nt(์์ฒด, ์์, ๋ค์ค ๋งค๊ฐ๋ณ์, ๋งค๊ฐ๋ณ์)
1008 ์ปดํ์ผ๋_sql,
1009 ์ฆ๋ฅ๋ ๋งค๊ฐ๋ณ์,
-> 1010 ์ปดํ์ผ๋_SQL, ์ฆ๋ฅ๋_๋งค๊ฐ๋ณ์
1011)
1012 if self._has_events ๋๋ self.engine._has_events:
C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc in _execute_context(sel
f, ๋ฐฉ์ธ, ์์ฑ์, ๋ช
๋ น๋ฌธ, ๋งค๊ฐ๋ณ์, *args)
1144๊ฐ์ ๋งค๊ฐ๋ณ์,
1145 ์ปค์,
-> 1146 ์ปจํ
์คํธ)
1147
1148 if self._has_events ๋๋ self.engine._has_events:
C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc _handle_dbapi_except
ion(self, e, ๋ฌธ, ๋งค๊ฐ๋ณ์, ์ปค์, ์ปจํ
์คํธ)
1342 )
1343 ๊ธฐํ:
-> 1344 util.reraise(*exc_info)
1345
1346 ๋๋์ด:
C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc in _execute_context(sel
f, ๋ฐฉ์ธ, ์์ฑ์, ๋ช
๋ น๋ฌธ, ๋งค๊ฐ๋ณ์, *args)
1114 ์ฑ๋ช
,
1115 ๋งค๊ฐ๋ณ์,
-> 1116 ์ปจํ
์คํธ)
1117 elif ๋งค๊ฐ๋ณ์ ๋ฐ context.no_parameters๊ฐ ์๋๋๋ค:
1118 if self.dialect._has_events:
C:\Python27\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.pyc in do_execut
๋ง์(์์ฒด, ์ปค์, ๋ช
๋ น๋ฌธ, ๋งค๊ฐ๋ณ์, ์ปจํ
์คํธ)
93
94 def do_executemany(self, cursor, statement, parameters, context=None
):
---> 95 rowcount = cursor.executemany(๋ฌธ, ๋งค๊ฐ๋ณ์)
์ปจํ
์คํธ๊ฐ ์์์ด ์๋ ๊ฒฝ์ฐ 96:
97ํ
C:\Python27\lib\site-packages\pymysql\cursors.pyc in executemany(self, query, ar
์ง)
153 ๋ฐํ self._do_execute_many(q_prefix, q_values, q_postfix,
์ธ์,
154ํ
--> 155 self._get_db().encoding)
156
157ํ
C:\Python27\lib\site-packages\pymysql\cursors.pyc in _do_execute_many(self, pref
ix, ๊ฐ, ์ ๋ฏธ์ฌ, args, max_stmt_length, ์ธ์ฝ๋ฉ)
179 if isinstance(v, text_type):
PY2์ธ ๊ฒฝ์ฐ 180:
--> 181 v = v.encode(์ธ์ฝ๋ฉ)
182 ๊ธฐํ:
183ํ
UnicodeEncodeError: 'latin-1' ์ฝ๋ฑ์ 433-438 ์์น์ ๋ฌธ์๋ฅผ ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค.
๋ฒ์์ ์๋ ์์(256)
engine
๊ฐ์ฒด๋ ๊ตฌ์ฑํด ๋ณด์
จ์ต๋๊น? http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#engine -creation-api ์ฐธ์กฐ
๊ทธ๋ฆฌ๊ณ ์ฌํ ๊ฐ๋ฅํ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? (์ด ์ค๋ฅ๋ฅผ ์ ๊ณตํ๋ ์์ ๋ฐ์ดํฐ ํ๋ ์)
๊ฐ์ฌํฉ๋๋ค! create_engine() ํธ์ถ์ '?charset=utf8'์ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ฌํฉ๋๋ค! create_engine() ํธ์ถ์ '?charset=utf8'์ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.