Quindi è venuto fuori che questo è stato risposto alcune volte, semplicemente non avevo il giusto Google-fu per trovare le domande esistenti.
- Python, converti il carattere a 4 byte per evitare l'errore MySQL "Valore stringa errato:"
- Avviso generato inserendo Unicode a 4 byte su MySQL
Grazie a Martijn Pieters , la soluzione è venuta dal mondo delle espressioni regolari, in particolare da questo codice (basato sulla sua risposta al primo link sopra):
import re
try:
# UCS-4
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# mytext = u'<some string containing 4-byte chars>'
mytext = highpoints.sub(u'\u25FD', mytext)
Il carattere che sto sostituendo è il WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI, ma potrebbe essere qualsiasi cosa.
Per chi non ha familiarità con UCS, come me, questo è un sistema per la conversione Unicode e una data build di Python includerà il supporto per la variante UCS-2 o UCS-4, ognuna delle quali ha un limite superiore diverso sul supporto dei caratteri.
Con l'aggiunta di questo codice, le stringhe sembrano persistere bene in MySQL 5.1.
Spero che questo aiuti qualcun altro nella stessa situazione!