Legen Sie den Wert der Spalte beim Aktualisieren der Tabelle mit Alembic fest

8

Ich verwende PostgreSQL und Alembic für die Migration. Als ich eine neue Spalte zu meiner Benutzertabelle hinzufügte, generierte Alembic eine Migration mit dem folgenden Skript:

%Vor%

Eigentlich möchte ich den Wert des Benutzernamens automatisch generieren, wenn ich die Produktionsversion aktualisiere. Mit anderen Worten, meine Produktionsversion hat viele Benutzer und wenn ich das obige Upgrade dafür ausführe, wird ein Fehler angezeigt, der besagt, dass der Benutzername nicht NULL sein kann, also muss ich alle Benutzer löschen, die Benutzertabelle aktualisieren und Nach dem Hinzufügen der Benutzer wieder, was schmerzhaft ist. Daher möchte ich das obige Skript ändern mit:

%Vor%

Wie oben im Code erwähnt, möchte ich einen SQL-Code ausführen, der die Email-Adresse wie [email protected] überprüft und alles nach dem '@' Zeichen (in diesem Fall '@ example.com') und setzt den Wert des Benutzernamens (in diesem Fall 'test') danach macht nullable = false.

Wie kann ich das tun? Was muss das Skript sein, anstatt username = <email address with no '@' and everything comes after '@' sign should be removed> und nullable=false

zu setzen

Oder gibt es eine andere Möglichkeit, den username -Standardwert als E-Mail-Adresse ohne @ sing und alles danach einzustellen?

    
Max 20.08.2014, 11:29
quelle

1 Antwort

4

Hier wurde das Problem gelöst.

%Vor%     
Max 26.08.2014, 12:33
quelle