Okazuje się, że już kilka razy otrzymałem odpowiedź, po prostu nie miałem odpowiedniego Google-fu, aby znaleźć istniejące pytania.
- Python, przekonwertuj 4-bajtowy znak, aby uniknąć błędu MySQL „Niewłaściwa wartość ciągu:”
- Ostrzeżenie wywołane przez wstawienie 4-bajtowy kod Unicode do mysql
Podziękowania dla Martijn Pieters , rozwiązanie pochodzi ze świata wyrażeń regularnych, a konkretnie z tego kodu (na podstawie jego odpowiedzi na pierwszy link powyżej):
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)
Zastępowany przeze mnie znak to WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI, ale może to być cokolwiek.
Dla osób niezaznajomionych z UCS, takich jak ja, jest to system konwersji Unicode, a dana kompilacja Pythona będzie zawierać obsługę wariantu UCS-2 lub UCS-4, z których każdy ma inną górną granicę obsługi znaków.
Po dodaniu tego kodu ciągi wydają się utrzymywać w MySQL 5.1 w porządku.
Mam nadzieję, że pomoże to każdemu w tej samej sytuacji!