Seite 1 von 1
Mysql Query
Verfasst: Montag 15. August 2005, 18:27
von Klaus
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
Re: Mysql Query
Verfasst: Montag 15. August 2005, 18:34
von ProgChild
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
Python kann SQL nicht verändern. Der SQL Syntax hängt nicht von Python sondern von der verwendeten Datenbank ab.
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()
Re: Mysql Query
Verfasst: Dienstag 16. August 2005, 09:02
von N317V
Klaus hat geschrieben:Wie siehst richtig aus oder wo kann ich mehr dazu lesen?
http://dev.mysql.com/doc/mysql/de/create-table.html
mysql query
Verfasst: Dienstag 16. August 2005, 10:51
von Klaus
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.
Verfasst: Dienstag 16. August 2005, 11:03
von Leonidas
Bei dem Create Table scheint die schließende Klammer zu fehlen, oder braucht SQL gar keine solchen Klammern?
Verfasst: Dienstag 16. August 2005, 11:41
von jens
Ganz genau, außerdem fehlt das Semikolon am Ende. So geht's vielleicht besser:
Verfasst: Dienstag 16. August 2005, 11:48
von Leonidas
Dann müsstest du
s so setzen:
Code: Alles auswählen
s = """ CREATE Table (
`ID` INT(3),
`NAME` VARCHAR(8)
);"""
SQL query
Verfasst: Dienstag 16. August 2005, 19:50
von Sarah
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
Verfasst: Dienstag 16. August 2005, 20:23
von rayo
und wenn du print repr(r.getquery()) machst?
was gibt er dann genau aus?
Gruss
Verfasst: Mittwoch 17. August 2005, 06:34
von jens
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
mysql query
Verfasst: Mittwoch 17. August 2005, 09:55
von Sarah
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
Re: mysql query
Verfasst: Mittwoch 17. August 2005, 10:55
von Leonidas
Sarah hat geschrieben:wp kommt das u her? Das ne totale Überraschung?
Das ist ein
Unicode-String. Übrigens gibt es neben Unicode Strings auch Raw-Strings.
Versuch mal folgendes:
Jens hat schon recht, normalerweise nutzt man
cursor.execute().
Verfasst: Mittwoch 17. August 2005, 10:55
von rayo
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
Verfasst: Donnerstag 18. August 2005, 16:17
von kuerbis
ob latin-1 oder unicode hängt davon, welches Character set du in der MySQL eingestellt hast.