Seite 1 von 1

SQLAlchemy: Tabellen updaten...

Verfasst: Donnerstag 16. November 2006, 12:29
von jens
Letztens frage jemand im IRC wie man wohl Tabellen mit SQLAlchemy updaten kann. Ist eine gute Frage, weil ich da auch Interesse hab, wenn ich SQLAchemy in PyLucid einsetzten werde...

z.Z. mache ich Updates z.B. so:

Code: Alles auswählen

58 	        # lastupdatetime einfügen
59 	        for table in ("groups", "md5users", "templates", "user_group"):
60 	            SQLcommand = (
61 	                "ALTER TABLE $$%s ADD lastupdatetime"
62 	                " datetime NOT NULL default '0000-00-00 00:00:00';"
63 	            ) % table
64 	            msg = (
65 	                "add 'lastupdatetime' column in '%s'-table"
66 	            ) % table
67 	            self._execute(msg,SQLcommand)
http://pylucid.net/trac/browser/trunk/P ... ate.py#L23

Jemand eine Ahnung?

Verfasst: Samstag 25. November 2006, 14:47
von geraldf
Hallo Jens,

leider kenne ich SQLAchemy und PyLucid nicht.

Was SQL betrifft:
UPDATE ... Datensatz aktualisieren
ALTER TABLE ... Tabellenstruktur ändern

Beste Grüße
Gerald

Verfasst: Sonntag 26. November 2006, 13:08
von geraldf
Hallo Jens,

vermutlich geht es um MySQL.

Spalte 2 hinter Spalte 1 einfügen:
ALTER TABLE tbl_name ADD COLUMN col2 col_details AFTER col1;

Verfasst: Sonntag 26. November 2006, 13:21
von jens
Danke für deine Hilfe... Aber das ist nicht das eigentliche Problem...

Ich hätte gern eine MySQL unabhängige Lösung und frage mich ob SQLAlchemy da was bietet...

Verfasst: Sonntag 26. November 2006, 14:36
von geraldf
Hallo Jens!
jens hat geschrieben:[...]Ich hätte gern eine MySQL unabhängige Lösung und frage mich ob SQLAlchemy da was bietet...
Da kann ich leider jetzt nicht helfen.

Tabellenänderungen funktionieren bei einzelnen DBMS' unterschiedlich.
Ein portables Programm dafür zu entwickeln ist daher aufwendig.

Verfasst: Sonntag 26. November 2006, 17:43
von Y0Gi
Als portables ORM abstrahiert SQLAlchemy natürlich so gut es geht von den nutzbaren DBMS.

jens: Ob und wie das in SA geht, weiß ich nicht sicher. Eine Möglichkeit wäre, die Tabelle zu droppen und, mittels einer neuen, angepassten Tabellenklasse neu zu erstellen. Dabei gehen natürlich die Einträge verloren.

Letztlich halte ich es generell für eine schlechte Idee, so die Tabellen automatisiert ändern zu wollen. Wenn du Schemata ändern willst, mach es manuell. Wenn du es für die Nutzer ermöglichen willst, musst du vermutlich mit DBMS-spezifischen Konverter-Scripts daherkommen.