tabelle in mysql erstellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Hi.
Kann mir jemand sagen, warum das hier nicht geht?

Code: Alles auswählen

testtablename = 'test'

c.execute ("""
       CREATE TABLE %s
       (
         ID     INTEGER AUTO_INCREMENT,
         PRIMARY KEY ( `ID` ) 
       )
     """) %testtablename
Ersetze ich %s durch einen festen string, dann gehts.
Dankeschön
Zuletzt geändert von The Spirit am Freitag 19. Juni 2009, 10:52, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Vertausch mal die Klammer und die Ersetzung ;)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Na weil erst die execute-Funktion ausgeführt wird und du dann versuchst auf das Ergebnis String-Formatierung anzuwenden.

So funktioniert es:

Code: Alles auswählen

c.execute ("""
       CREATE TABLE %s
       (
         ID     INTEGER AUTO_INCREMENT,
         PRIMARY KEY ( `ID` )
       )
     """ % testtablename)
Wenn du allerdings Werte einfügen möchtest, dann beachte den zweiten Parameter der execute-Methode.

"Geht nicht" ist übrigens eine sehr ungenaue Fehlerbeschreibung. Python liefert oftmals ausgezeichnete Fehlermeldungen, die sollte man mit angeben.
Das Leben ist wie ein Tennisball.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

vielen dank für die schnelle hilfe
lunar

SQLAlchemy ist an dieser Stelle mit Sicherheit einen Blick wert, denn das Erzeugen von SQL-Ausdrücken durch Zeichenkettenverarbeitung ist fehleranfällig und eine Quelle potentieller Sicherheitslücken. SQLAlchemy erlaubt die programmatische Erzeugung von SQL-Ausdrücken über Python.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

lunar hat geschrieben:SQLAlchemy ist an dieser Stelle mit Sicherheit einen Blick wert
...oder Storm, SQLObject, Autumn ;)

Stefan
lunar

Und welches davon ist in diesem Fall jetzt brauchbarer Ersatz für SQLAlchemy? ;)
Antworten