Hi,
irgendwie such ich schon im Netz wie der der Syntax von Create in Python ist.
Bisherversuch ich so aber es Klappt nicht:
b.query("""CREATE TABLE test (ID INTEGER(3), NAME VARCHAR(5)""");
Wie siehst richtig aus oder wo kann ich mehr dazu lesen?
MFG
Klaus
Mysql Query
Python kann SQL nicht verändern. Der SQL Syntax hängt nicht von Python sondern von der verwendeten Datenbank ab.Klaus hat geschrieben:Hi,
irgendwie such ich schon im Netz wie der der Syntax von Create in Python ist.
Bisherversuch ich so aber es Klappt nicht
Hier mal ein kleines Beispiel(ungetestet) mit MySQL:
Code: Alles auswählen
import MySQLdb
connection = MySQLdb.connect(host = db_host, user = db_user, passwd = db_passwd, db = db_name)
cursor = connection.cursor()
cursor.execute( 'CREATE TABLE test (ID INTEGER(3), NAME VARCHAR(5) )' )
connection.commit()
http://dev.mysql.com/doc/mysql/de/create-table.htmlKlaus hat geschrieben:Wie siehst richtig aus oder wo kann ich mehr dazu lesen?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Hi,
ja soweit ist mir alles klar. Ich nutze allerdings das Modul mysql.
Für ich die query so aus klappt auch alles.
z.B. db.query("CREATE Table (ID INT(3), NAME VARCHAR(8)")
Er erstellt problemlos die Tabelle.
Das Problem ist das ich den query dynamisch erstelle. Und er auf einer Variablen gespeichert ist.
z.B. würde in der Variable S flogendes stehen wenn ich print s ausführe:
"CREATE Table (ID INT(3), NAME VARCHAR(8)"
Und jetzt will ich den query senden mit db.query(s)
Und das ist irgendwie nicht dasselbe. Bekomm jedesmal die Fehlermeldung das de
SQL Syntax nicht korrekt ist.
Ich hoffe ihr konntet mir folgen und habt Rat. Ich probiers schon hin und her aber irgendetwas
überseh ich wohl:)
MFG
Klaus
Edit (Leonidas): Smileys aus Code entfernt.
ja soweit ist mir alles klar. Ich nutze allerdings das Modul mysql.
Für ich die query so aus klappt auch alles.
z.B. db.query("CREATE Table (ID INT(3), NAME VARCHAR(8)")
Er erstellt problemlos die Tabelle.
Das Problem ist das ich den query dynamisch erstelle. Und er auf einer Variablen gespeichert ist.
z.B. würde in der Variable S flogendes stehen wenn ich print s ausführe:
"CREATE Table (ID INT(3), NAME VARCHAR(8)"
Und jetzt will ich den query senden mit db.query(s)
Und das ist irgendwie nicht dasselbe. Bekomm jedesmal die Fehlermeldung das de
SQL Syntax nicht korrekt ist.
Ich hoffe ihr konntet mir folgen und habt Rat. Ich probiers schon hin und her aber irgendetwas
überseh ich wohl:)
MFG
Klaus
Edit (Leonidas): Smileys aus Code entfernt.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ganz genau, außerdem fehlt das Semikolon am Ende. So geht's vielleicht besser:
Code: Alles auswählen
CREATE Table (
`ID` INT(3),
`NAME` VARCHAR(8)
);
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann müsstest du s so setzen:
Code: Alles auswählen
s = """ CREATE Table (
`ID` INT(3),
`NAME` VARCHAR(8)
);"""
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi,
ja all diese querys hab ich selbst schon ausprobiert und MYsql ist da wohl tolerant und läßt m
meinen und euren Syntax zu.
Allerdings klappts immer noch nicht.
so kommt der fertige query dann an.
s = r.getquery()
db.query(s)
und Prompt kommt der Fehler wegen dem Syntax. Wie gesagt mach ich print s
wird der query ausgegeben den ihr auch schon vorschlagt.
Irgendnen Haken gibs da wohl. Würd ich den den Inhalt von s aus der Shell
Umgebung rauskopieren und db.query(KopierterqueryAusShell) manuell eingeben würds gehen.
würd ich aber direkt db.query(r.getquery()) reinschreiben gehts nicht.
Ich verzweifel echt. Das ist irgend ne kleine Sache nur komm ich nicht drauf.
Ich hoff ihr habt noch nen super Tipp.
MFG
Sarah
ja all diese querys hab ich selbst schon ausprobiert und MYsql ist da wohl tolerant und läßt m
meinen und euren Syntax zu.
Allerdings klappts immer noch nicht.
so kommt der fertige query dann an.
s = r.getquery()
db.query(s)
und Prompt kommt der Fehler wegen dem Syntax. Wie gesagt mach ich print s
wird der query ausgegeben den ihr auch schon vorschlagt.
Irgendnen Haken gibs da wohl. Würd ich den den Inhalt von s aus der Shell
Umgebung rauskopieren und db.query(KopierterqueryAusShell) manuell eingeben würds gehen.
würd ich aber direkt db.query(r.getquery()) reinschreiben gehts nicht.
Ich verzweifel echt. Das ist irgend ne kleine Sache nur komm ich nicht drauf.
Ich hoff ihr habt noch nen super Tipp.
MFG
Sarah
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Also ich mach das nicht über db.query() sondern über db.cursor.execute(), halt so:
Code: Alles auswählen
SQLcommand = """ CREATE Table (
`ID` INT(3),
`NAME` VARCHAR(8)
);"""
try:
db.cursor.execute( SQLcommand )
except Exception, e:
print "Can't create table: '%s'" % e
Hi,
ja das mit dem print repr(r.get_query()) ist nen guter Tipp.
Was macht repr?
Jetzt ist der query leicht anders und auch falsch. Es kommt raus.
u'""" CREATE TABLE stern (Nummer INTEGER(4), Name VARCHAR(8));"""'
wp kommt das u her? Das ne totale Überraschung?
MFG
Sarah
ja das mit dem print repr(r.get_query()) ist nen guter Tipp.
Was macht repr?
Jetzt ist der query leicht anders und auch falsch. Es kommt raus.
u'""" CREATE TABLE stern (Nummer INTEGER(4), Name VARCHAR(8));"""'
wp kommt das u her? Das ne totale Überraschung?
MFG
Sarah
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das ist ein Unicode-String. Übrigens gibt es neben Unicode Strings auch Raw-Strings.Sarah hat geschrieben:wp kommt das u her? Das ne totale Überraschung?
Versuch mal folgendes:
Code: Alles auswählen
q = r.get_query()
q = q.encode('latin-1')
db.query(q)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
das u heisst, dass es ein Unicode String ist. ich weiss jetzt halt nicht ob mysql unicode ohne probleme frisst.
falls mysql unicode nicht unterstützt (sollte zwar), kannst mal folgendes probieren
gruss
falls mysql unicode nicht unterstützt (sollte zwar), kannst mal folgendes probieren
Code: Alles auswählen
s = r.getquery()
db.query(s.encode('latin-1'))
ob latin-1 oder unicode hängt davon, welches Character set du in der MySQL eingestellt hast.