Pandas: to_sql UnicodeEncodeError

تم إنشاؤها على ١ سبتمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: pandas-dev/pandas

تعطي كتابة إطار بيانات إلى sql خطأ UnicodeEncode ، على الرغم من تعيين sys.defaultencoding على "utf-8" وأن قاعدة بيانات mysql تستخدم أيضًا utf-8 كتصنيف افتراضي. أيه أفكار؟ شكرا!

في [6]: df1.to_sql (الاسم = 'webshoptracks2'، con = engine)

UnicodeEncodeError Traceback (آخر مكالمة أخيرة)
في()
----> 1 df1.to_sql (الاسم = 'webshoptracks2' ، con = المحرك)

C: \ Python27 \ lib \ site -pack \ pandas \ core \ generic.pyc in to_sql (self، name، con،
flavour ، schema ، if_exists ، index ، index_label ، chunksize ، dtype)
980 ذاتي ، اسم ، يخدع ، نكهة = نكهة ، مخطط = مخطط ، if_exists = if_
موجود ،
981 الفهرس = الفهرس ، index_label = index_label ، chunksize = chunksize ،
-> 982 نوع dtype = نوع dtype)
983
984 def to_pickle (ذاتي ، مسار):

C: \ Python27 \ lib \ site -pack \ pandas \ io \ sql.pyc in to_sql (frame، name، con، flav
أو المخطط ، if_exists ، الفهرس ، index_label ، chunksize ، dtype)
547 pandas_sql.to_sql (frame، name، if_exists = if_exists، index = index،)
548 index_label = index_label ، المخطط = المخطط ،
-> 549 قطعة = حجم مقطع ، نوع dtype = نوع dtype)
550
551

C: \ Python27 \ lib \ site -pack \ pandas \ io \ sql.pyc in to_sql (self، frame، name، if_
موجود ، فهرس ، index_label ، مخطط ، chunksize ، dtype)
مخطط 1186 = مخطط ، نوع dtype = نوع dtype)
1187 table.create ()
-> 1188 table.insert (حجم القطع)
1189 # تحقق من مشكلات حساسية الحالة المحتملة (GH7815)
1190 إذا لم يكن الاسم في self.engine.table_names (المخطط = المخطط أو self.met
أ. مخطط):

C: \ Python27 \ lib \ site -pack \ pandas \ io \ sql.pyc في الإدخال (self ، chunksize)
726
727 chunk_iter = zip (* [arr [start_i: end_i] للوصول إلى data_li
شارع])
-> 728 self._execute_insert (conn، keys، chunk_iter)
729
730 def _query_iterator (ذاتي ، نتيجة ، حجم مقطع ، أعمدة ، coerce_float = T
شارع ،

C: \ Python27 \ lib \ site -pack \ pandas \ io \ sql.pyc in _execute_insert (self، conn، k
eys، data_iter)
701 def _execute_insert (self، conn، keys، data_iter):
702 data = [dt ((k، v) for k، v in zip (keys، row)) للصف في data_
مكرر]
-> 703 conn.execute (self.insert_statement () ، بيانات)
704
705 def insert (self، chunksize = None):

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ engine \ base.pyc في التنفيذ (ذاتي ، كائن
، _multiparams، * _params)
912 نوع (كائن))
913 آخر:
-> 914 عائد الميثيل (النفس ، متعدد الأعداد ، البارامترات)
915
916 def _execute_function (self، func، multiparams، params):

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ sql \ element.pyc في _execute_on_connect
أيون (ذاتي ، اتصال ، متعدد الأوجه ، بارامز)
321
322 def _execute_on_connection (self، connection، multiparams، params):
-> 323 عودة اتصال
تصلب متعدد)
324
325 def unique_params (self، _optionaldict، * _kwargs):

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ engine \ base.pyc in _execute_clauseeleme
nt (self، elem، multiparams، params)
1008 compiled_sql ،
1009 بارامز مقطر
-> 1010 معلمات مجمعة مجمعة ومقطرة
1011)
1012 إذا كان لديك أحداث أو محرك ذاتي.

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ engine \ base.pyc in _execute_context (sel
f ، لهجة ، مُنشئ ، بيان ، معلمات ، * args)
1144 معلمة ،
1145 المؤشر
-> سياق 1146)
1147
1148 إذا كان لديك أحداث أو محرك ذاتي.

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ engine \ base.pyc in _handle_dbapi_except
أيون (النفس ، البريد ، البيان ، المعلمات ، المؤشر ، السياق)
1342)
1343 آخر:
-> 1344 util.reraise (* exc_info)
1345
1346 أخيرًا:

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ engine \ base.pyc in _execute_context (sel
f ، لهجة ، مُنشئ ، بيان ، معلمات ، * args)
1114 بيان ،
1115 معلمة ،
-> سياق 1116)
1117 elif ليس المعلمات والسياق.
1118 إذا كان الاتصال الذاتي.

C: \ Python27 \ lib \ site -pack \ sqlalchemy \ اللهجات \ mysql \ mysqldb.pyc في do_execut
emany (self، cursor، statement، parameters، Context)
93
94 def do_executemany (self، cursor، statement، parameters، Context = لا شيء
):
---> 95 rowcount = cursor.executemany (بيان ، معلمات)
96 إذا لم يكن السياق بلا:
97 سياق ._rowcount = rowcount

C: \ Python27 \ lib \ site -pack \ pymysql \ cursors.pyc في التنفيذ (self، query، ar
gs)
153- استرجاع كلمة المرور.
أرجس
154- الحد الاقصى للطول
-> 155 self._get_db (). ترميز)
156
157 self.rowcount = sum (self.execute (استعلام ، مناقشة) لـ arg في args)

C: \ Python27 \ lib \ site -pack \ pymysql \ cursors.pyc في _do_execute_many (self، pref
التاسع ، القيم ، postfix ، args ، max_stmt_length ، الترميز)
179 if isinstance (v، text_type):
180 إذا كان PY2:
-> 181 فولت = v.encode (ترميز)
182 آخر:
183 v = v.encode (ترميز ، "بديل")

خطأ UnicodeEncode: لا يمكن لبرنامج الترميز "latin-1" تشفير الأحرف في الموضع 433-438:
ترتيبي ليس في النطاق (256)

IO SQL

التعليق الأكثر فائدة

شكرا لك! أدت إضافة '؟ charset = utf8' إلى استدعاء create_engine () إلى حل المشكلة.

ال 3 كومينتر

هل حاولت تكوين كائن engine أيضًا؟ انظر http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#engine -creation-api

وهل يمكنك تقديم مثال قابل للتكرار؟ (إطار بيانات صغير يعطيك هذا الخطأ)

شكرا لك! أدت إضافة '؟ charset = utf8' إلى استدعاء create_engine () إلى حل المشكلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات