Π·Π°ΠΏΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ° Π΄Π°Π½Π½ΡΡ Π² sql Π΄Π°Π΅Ρ UnicodeEncodeError, Ρ ΠΎΡΡ sys.defaultencoding ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«utf-8Β», Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ mysql ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ utf-8 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ±ΡΠ΅ ΠΈΠ΄Π΅ΠΈ? Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
UnicodeEncodeError Traceback (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ)
----> 1 df1.to_sql (name = 'webshoptracks2', con = engine)
C: \ Python27 \ lib \ site-packages \ pandas \ core \ generic.pyc Π² to_sql (self, name, con,
Π°ΡΠΎΠΌΠ°Ρ, ΡΡ
Π΅ΠΌΠ°, if_exists, index, index_label, chunksize, dtype)
980 Ρ, ΠΈΠΌΡ, ΠΏΡΠΎΡΠΈΠ², Π°ΡΠΎΠΌΠ°Ρ = Π°ΡΠΎΠΌΠ°Ρ, ΡΡ
Π΅ΠΌΠ° = ΡΡ
Π΅ΠΌΠ°, if_exists = if_
ΡΡΡΠ΅ΡΡΠ²ΡΡΡ,
981 index = index, index_label = index_label, chunksize = chunksize,
-> 982 dtype = dtype)
983
984 def to_pickle (ΡΠ°ΠΌ, ΠΏΡΡΡ):
C: \ Python27 \ lib \ site-packages \ pandas \ io \ sql.pyc Π² to_sql (frame, name, con, flav
ΠΈΠ»ΠΈ, ΡΡ
Π΅ΠΌΠ°, if_exists, index, index_label, chunksize, dtype)
547 pandas_sql.to_sql (ΡΡΠ΅ΠΉΠΌ, ΠΈΠΌΡ, if_exists = if_exists, index = index,
548 ΠΌΠ΅ΡΠΊΠ°_ΠΈΠ½Π΄Π΅ΠΊΡΠ° = ΠΌΠ΅ΡΠΊΠ°_ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΡΡ
Π΅ΠΌΠ° = ΡΡ
Π΅ΠΌΠ°,
-> 549 chunksize = chunksize, dtype = dtype)
550
551
C: \ Python27 \ lib \ site-packages \ pandas \ io \ sql.pyc Π² to_sql (self, frame, name, if_
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈΠ½Π΄Π΅ΠΊΡ, index_label, schema, chunksize, dtype)
1186 ΡΡ
Π΅ΠΌΠ° = ΡΡ
Π΅ΠΌΠ°, dtype = dtype)
1187 table.create ()
-> 1188 table.insert (ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°)
1189 # ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ (GH7815)
1190, Π΅ΡΠ»ΠΈ ΠΈΠΌΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² self.engine.table_names (schema = schema ΠΈΠ»ΠΈ self.met
a.schema):
C: \ Python27 \ lib \ site-packages \ pandas \ io \ sql.pyc Π² Π²ΡΡΠ°Π²ΠΊΠ΅ (self, chunksize)
726
727 chunk_iter = zip (* [arr [start_i: end_i] Π΄Π»Ρ arr Π² data_li
st])
-> 728 self._execute_insert (ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡΡΠΈ, chunk_iter)
729
730 def _query_iterator (self, result, chunksize, columns, coerce_float = T
ΡΡΡΠ°,
C: \ Python27 \ lib \ site-packages \ pandas \ io \ sql.pyc Π² _execute_insert (self, conn, k
ΡΠΉΡ, data_iter)
701 def _execute_insert (self, conn, keys, data_iter):
702 data = [dict ((k, v) Π΄Π»Ρ k, v Π² zip (keys, row)) Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ Π² data_
iter]
-> 703 conn.execute (self.insert_statement (), Π΄Π°Π½Π½ΡΠ΅)
704
705 def insert (self, chunksize = None):
C: \ Python27 \ lib \ site-packages \ sqlalchemy \ engine \ base.pyc Π² execute (self, object
, _multiparams, * _params)
912 ΡΠΈΠΏ (ΠΎΠ±ΡΠ΅ΠΊΡ))
913 Π΅ΡΠ΅:
-> 914 Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ΅Ρ (self, multiparams, params)
915
916 def _execute_function (self, func, multiparams, params):
C: \ Python27 \ lib \ site-packages \ sqlalchemy \ sql \ elements.pyc Π² _execute_on_connect
ion (self, connection, multiparams, params)
321
322 def _execute_on_connection (self, connection, multiparams, params):
-> 323 Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ._execute_clauseelement (self, multiparams, para
Π Π‘)
324
325 def unique_params (self, _optionaldict, * _kwargs):
C: \ Python27 \ lib \ site-packages \ sqlalchemy \ engine \ base.pyc Π² _execute_clauseeleme
nt (self, elem, multiparams, params)
1008 compiled_sql,
1009 distilled_params,
-> 1010 compiled_sql, distilled_params
1011)
1012, Π΅ΡΠ»ΠΈ self._has_events ΠΈΠ»ΠΈ self.engine._has_events:
C: \ Python27 \ lib \ site-packages \ sqlalchemy \ engine \ base.pyc Π² _execute_context (sel
f, Π΄ΠΈΠ°Π»Π΅ΠΊΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ)
1144 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°,
1145 ΠΊΡΡΡΠΎΡ,
-> 1146 ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ)
1147
1148, Π΅ΡΠ»ΠΈ 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 Π² _execute_context (sel
f, Π΄ΠΈΠ°Π»Π΅ΠΊΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ)
ΠΡΠΏΠΈΡΠΊΠ° 1114,
1115 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²,
-> 1116 ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ)
1117 elif not ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ context.no_parameters:
1118, Π΅ΡΠ»ΠΈ self.dialect._has_events:
C: \ Python27 \ lib \ site-packages \ sqlalchemy \ dialects \ mysql \ mysqldb.pyc Π² do_execut
emany (self, ΠΊΡΡΡΠΎΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ)
93
94 def do_executemany (self, ΠΊΡΡΡΠΎΡ, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, context = None
):
---> 95 rowcount = cursor.executemany (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ)
96, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π΅ ΡΠ°Π²Π΅Π½ None:
97 context._rowcount = ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ
C: \ Python27 \ lib \ site-packages \ pymysql \ cursors.pyc Π² executemany (self, query, ar
gs)
153 return self._do_execute_many (q_prefix, q_values, q_postfix,
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ,
154 self.max_stmt_length,
-> 155 ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° self._get_db ().)
156
157 self.rowcount = sum (self.execute (query, arg) Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² args)
C: \ Python27 \ lib \ site-packages \ pymysql \ cursors.pyc Π² _do_execute_many (self, pref
ix, Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΡΠΈΠΊΡ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, max_stmt_length, ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°)
179, Π΅ΡΠ»ΠΈ isinstance (v, text_type):
180, Π΅ΡΠ»ΠΈ PY2:
-> 181 v = v.encode (ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°)
182 Π΅ΡΠ΅:
183 v = v.encode (ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°, 'surrogateescape')
UnicodeEncodeError: ΠΊΠΎΠ΄Π΅ΠΊ latin-1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ 433-438:
ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° (256)
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΠ°Π»ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ engine
? Π‘ΠΌ. Http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#engine -creation-api.
Π ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ? (Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ Π²Π°ΠΌ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ)
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ '? Charset = utf8' ΠΊ Π²ΡΠ·ΠΎΠ²Ρ create_engine () ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ: http://docs.sqlalchemy.org/en/rel_1_0/dialects/mysql.html?highlight=charset#unicode
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ '? Charset = utf8' ΠΊ Π²ΡΠ·ΠΎΠ²Ρ create_engine () ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.