2017-03-22 1 views
0

J'ai cherché maintenant plusieurs heures. Je prends des messages sur Facebook et je veux les analyser dans un db mysql en utilisant SQLAlchemy en python. Les messages Facebook comprennent des smileys et un tas de caractères spéciaux.SQLAlchemy double problème de barre oblique en utilisant MySQLdb

L'URI de base de données sqlalchemy se présenter comme suit:
SQLALCHEMY_DATABASE_URI = "mysql + mysqldb: // ... charset = UTF8 & use_unicode = 0"

Avant de vous engager à la base de données, je suis aussi dans l'encodage UTF8:
string.encode ("UTF8")

Test de plusieurs questions/réponses ici je lance encore dans ce numéro:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Incorrect string value: '\\xF0\\x9F\\x8C\\x9E\\xF0\\x9F...'

+0

Vous êtes sur Python 2? Sinon, [n'utilisez pas du tout 'use_unicode') (http://docs.sqlalchemy.org/en/latest/dialects/mysql.html#unicode-encoding-decoding). Et si vous souhaitez obtenir les gains de performance possibles, laissez SQLAlchemy gérer l'encodage pour vous, ou en d'autres termes n'encodez pas manuellement. Votre question manque [mcve] (https://stackoverflow.com/help/mcve), il est donc difficile de dire exactement où cela se passe, mais cela ressemble à un double échappement. Au lieu des octets, vous avez des représentations de chaîne de séquences d'échappement octet (par exemple produites par le gestionnaire d'erreurs backslashreplace). –

+0

Merci @ IljaEverilä pour votre commentaire. Oui j'emploie 2.7 ajouterai cette information à ma question et essaye de l'améliorer pour mcve. Je cours également dans l'erreur d'analyse avec les guillemets doubles si je n'encode pas la chaîne. –

Répondre

2

Avez-vous essayé d'utiliser utf8mb4 au lieu de utf8?

Here's the reference

+0

Oui, j'ai. et il en résulte le même problème. –

+0

@JustusNiemzok - mais avez-vous changé '? Charset = utf8 & use_unicode = 0'? _Et_ la table/colonne 'CHARACTER SET'? 'utf8mb4' _is_ requis pour. –

+0

Plus d'astuces python: http://mysql.rjweb.org/doc.php/charcoll#python –