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:

Code: Alles auswählen

CREATE Table (
  `ID` INT(3),
  `NAME` VARCHAR(8)
);

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:

Code: Alles auswählen

q = r.get_query()
q = q.encode('latin-1')
db.query(q)
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

Code: Alles auswählen

s = r.getquery() 
db.query(s.encode('latin-1')) 
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.