SQLAlchemy: Tabellen updaten...

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
geraldf
User
Beiträge: 5
Registriert: Montag 20. November 2006, 19:43

Hallo Jens,

leider kenne ich SQLAchemy und PyLucid nicht.

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

Beste Grüße
Gerald
geraldf
User
Beiträge: 5
Registriert: Montag 20. November 2006, 19:43

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;
Beste Grüße
Gerald
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
geraldf
User
Beiträge: 5
Registriert: Montag 20. November 2006, 19:43

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.
Beste Grüße
Gerald
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Antworten