Wie zufällige Hashes erzeugen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Auf Kollisionen (mit vorhandenen Identifiern) muss ich ohnehin testen.

Meine o.g. Lösung ist *etwas*... kompakter als deine. Nimm's mir bitte nicht übel, wenn ich dabei bleibe ;)

Dein Beispiel ist dennoch hilfreich, wenn man einen bestimmten, evtl. eingeschränkten Zeichensatz benutzen möchte, danke.


Um zum Prüfen auf Kollisionen zurück zu kommen: Ich kann zwar eine Datenbank nach einem bestimmten Wert fragen und ihn, wenn dieser darin noch nicht vorhanden ist, einfügen. Allerdings ist nicht sichergestellt, dass nicht in der Zwischenzeit ein anderer Thread der Anwendung *(sehr, sehr) zufällig* auch diesen Wert erzeugt, abgefragt und eingefügt hat.

Wie lässt sich das verhindern? Ist ein `Lock`-Objekt eine gute Lösung (z.B. auch für das Erzeugen/ungestörte Einlesen/whatever von Dateien)? Würde es im Zusammenhang mit einer Datenbank evtl. zuviel Wartezeit verursachen und den Rest der Applikation ausbremsen?
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Transaktionen nehmen und einen UNIQUE index auf das Feld.
TUFKAB – the user formerly known as blackbird
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Urgs, Transaktionen, klar, danke.

Unique benutze ich natürlich schon. Hierzu wüsste ich bei der Gelegenheit jedoch gerne mal, wie man Datenbank-Exceptions z.B. durch Contraint-Überschreitungen sauber abfangen kann. Soweit ich weiß werfen die alle einen recht allgemeinen (SQLAlchemy-)Fehler, auf den sich schlecht reagieren lässt (und die Einbeziehung der Fehlermeldungen selbst ist mir zu riskant angesichts von Versionsänderungen).
Antworten