Seite 1 von 1

Verfasst: Dienstag 15. Mai 2007, 15:42
von thelittlebug
Bissal spät aber doch :

Du solltest das Encoding auch nachträglich mit "alter table ......" ändern können. Das Encoding lässt sich gesondert einstellen für:
Den ganzen Datenbankserver, wird als default genutzt wenn neue Datenbanken angelegt werden.
Eine Datenbank, wird als default genutzt wenn neue Tabellen angelegt werden.
Eine Tabelle, wird als default genutzt wenn neue Spalten angelegt werden.
Eine Spalte, hier kann nachträglich umgestellt werden wobei dann die DB die Daten konvertiert.

lgherby

p.s. häng auch grad beim Thema MySQL mit SQLAlchemy und Unicode rum. Scheint aber jetzt alles gelöst zu sein.

Verfasst: Dienstag 15. Mai 2007, 16:11
von jens
MySQLdb und encoding... Da gibt es überall Probleme mit, siehe auch: http://www.python-forum.de/topic-8002.html

In django gibt es auch ein paar Tickets zum Thema... Ich hoffe das alle zukünftigen Versionen vom Modul das besser machen als bisher ;)

Verfasst: Dienstag 15. Mai 2007, 16:48
von thelittlebug
Also Probleme hab ich keine mehr und auch die Lösung war eigentlich sehr angenehm nur hab ich mir zuerst ein paar Unicode Grundlagen durchlesen müssen um zu verstehen wie Python damit umgeht.

Im großen und ganzen habe ich nur folgendes gemacht:
1. SQLAlchemy alle Spalten auch als Unicode deklariert. ( z.b. Unicode(50) )
2. MySQL (war eine bestehende DB) alle Spalten auf utf8_unicode_ci umgestellt. Vorsichtshalber auch die Vorgaben für Tabellen und die DB falls neue Tabellen oder Spalten erstellt werden.
3. Connection String für SQLAlchemy mit den 2 Parametern versehen so wie es auch hier in diesem Thread beschrieben wurde.
4. Templatekonfiguration lt. Mako Doku.

Seitdem klappts auch mit dem bösen Unicode :)
Teilweise werden einem ja schauerhafte Märchen erzählt, was man nicht alles ersetzen und patchen muss, ich hab nur recht wenig davon mitbekommen.

lgherby

Verfasst: Dienstag 15. Mai 2007, 17:29
von birkenfeld
Die Mär vom "bösen Unicode" kommt daher, dass die Leute weder verstehen, dass Unicodestrings eine Sequenz von Codepoints sind (und nicht etwa "UTF-8-Strings", was man sich darunter auch immer vorstellen soll), noch dass man sich das Leben enorm durch das `codecs`-Modul erleichtern kann.