Pandas: to_sql UnicodeEncodeError

Dibuat pada 1 Sep 2015  ·  3Komentar  ·  Sumber: pandas-dev/pandas

menulis kerangka data ke sql memberikan UnicodeEncodeError, meskipun sys.defaultencoding diatur ke "utf-8" dan database mysql juga menggunakan utf-8 sebagai susunan default. Ada ide? Terima kasih!

Dalam [6]: df1.to_sql(name='webshoptracks2', con=engine)

UnicodeEncodeError Traceback (panggilan terakhir terakhir)
di dalam()
----> 1 df1.to_sql(name='webshoptracks2', con=engine)

C:\Python27\lib\site-packages\pandas\core\generic.pyc di to_sql(self, name, con,
rasa, skema, if_exists, indeks, index_label, chunksize, dtype)
980 diri, nama, penipu, rasa=rasa, skema=skema, if_exists=if_
ada,
981 indeks=indeks, indeks_label=indeks_label, chunksize=ukuran potongan,
--> 982 dtype=dtype)
983
984 def to_pickle(mandiri, jalur):

C:\Python27\lib\site-packages\pandas\io\sql.pyc di to_sql (bingkai, nama, con, flav
atau, skema, if_exists, index, index_label, chunksize, dtype)
547 pandas_sql.to_sql(bingkai, nama, if_exists=if_exists, indeks=indeks,
548 indeks_label=indeks_label, skema=skema,
-> 549 chunksize = ukuran chunk, dtype = dtype)
550
551

C:\Python27\lib\site-packages\pandas\io\sql.pyc di to_sql(self, frame, name, if_
ada, indeks, index_label, skema, chunksize, dtype)
1186 skema=skema, dtype=dtype)
1187 tabel.buat()
-> 1188 table.insert(ukuran potongan)
1189 # periksa kemungkinan masalah sensitivitas kasus (GH7815)
1190 jika nama tidak ada di self.engine.table_names(schema=schema atau self.met
a.skema):

C:\Python27\lib\site-packages\pandas\io\sql.pyc di sisipan (sendiri, chunksize)
726
727 chunk_iter = Zip(*[arr[start_i:end_i] untuk arr di data_li
NS])
-> 728 self._execute_insert(sambungan, kunci, chunk_iter)
729
730 def _query_iterator(sendiri, hasil, ukuran potongan, kolom, coerce_float=T
menyesali,

C:\Python27\lib\site-packages\pandas\io\sql.pyc di _execute_insert(self, conn, k
mata, data_iter)
701 def _execute_insert(self, conn, keys, data_iter):
702 data = [dict((k, v) untuk k, v dalam zip(keys, row)) untuk baris dalam data_
iter]
--> 703 conn.execute(self.insert_statement(), data)
704
705 def insert(self, chunksize=None):

C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc dalam mengeksekusi (diri, objek
, _multiparams, *_params)
912 jenis (objek))
913 lainnya:
-> 914 mengembalikan meth(self, multiparams, params)
915
916 def _execute_function(self, func, multiparams, params):

C:\Python27\lib\site-packages\sqlalchemy\sql\elements.pyc di _execute_on_connect
ion (sendiri, koneksi, multiparams, params)
321
322 def _execute_on_connection(self, connection, multiparams, params):
--> 323 koneksi balik._execute_clauseelement(self, multiparams, para
MS)
324
325 def unique_params(self, _optionaldict, *_kwargs):

C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc di _execute_clauseeleme
nt(self, elem, multiparams, params)
1008 dikompilasi_sql,
1009 suling_params,
-> 1010 dikompilasi_sql, distilasi_params
1011 )
1012 jika self._has_events atau self.engine._has_events:

C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc di _execute_context(sel
f, dialek, konstruktor, pernyataan, parameter, *args)
1144 parameter,
1145 kursor,
-> 1146 konteks)
1147
1148 jika self._has_events atau self.engine._has_events:

C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc di _handle_dbapi_except
ion (diri, e, pernyataan, parameter, kursor, konteks)
1342 )
1343 lainnya:
-> 1344 util.reraise(*exc_info)
1345
1346 akhirnya:

C:\Python27\lib\site-packages\sqlalchemy\engine\base.pyc di _execute_context(sel
f, dialek, konstruktor, pernyataan, parameter, *args)
1114 pernyataan,
1115 parameter,
-> 1116 konteks)
1117 elif bukan parameter dan context.no_parameters:
1118 jika self.dialect._has_events:

C:\Python27\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.pyc di do_execut
emany (diri, kursor, pernyataan, parameter, konteks)
93
94 def do_executemany(mandiri, kursor, pernyataan, parameter, konteks=Tidak ada
):
---> 95 jumlah baris = cursor.executemany(pernyataan, parameter)
96 jika konteksnya bukan Tidak ada:
97 konteks._jumlah baris = jumlah baris

C:\Python27\lib\site-packages\pymysql\cursors.pyc di executemany(self, query, ar
gs)
153 mengembalikan self._do_execute_many(q_prefix, q_values, q_postfix,
argumen,
154 self.max_stmt_length,
-> 155 self._get_db().encoding)
156
157 self.rowcount = sum(self.execute(query, arg) untuk arg dalam args)

C:\Python27\lib\site-packages\pymysql\cursors.pyc di _do_execute_many(self, pref
ix, nilai, postfix, argumen, max_stmt_length, encoding)
179 if isinstance(v, text_type):
180 jika PY2:
--> 181 v = v.encode(encoding)
182 lainnya:
183 v = v.encode(encoding, 'surrogateescape')

UnicodeEncodeError: codec 'latin-1' tidak dapat menyandikan karakter di posisi 433-438:
ordinal tidak dalam jangkauan (256)

IO SQL

Komentar yang paling membantu

Terima kasih! Menambahkan '?charset=utf8' ke panggilan create_engine() memecahkan masalah.

Semua 3 komentar

Apakah Anda mencoba mengonfigurasi objek engine juga? Lihat http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#engine -creation-api

Dan dapatkah Anda memberikan contoh yang dapat direproduksi? (kerangka data kecil yang memberi Anda kesalahan ini)

Terima kasih! Menambahkan '?charset=utf8' ke panggilan create_engine() memecahkan masalah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jsexauer picture jsexauer  ·  81Komentar

quicknir picture quicknir  ·  58Komentar

jorisvandenbossche picture jorisvandenbossche  ·  50Komentar

jreback picture jreback  ·  61Komentar

J-Postma picture J-Postma  ·  52Komentar