großes problem mit datenbanken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
LuScHe
User
Beiträge: 19
Registriert: Samstag 21. Dezember 2002, 19:52
Kontaktdaten:

Hi

Ich habe mit Access eine Datenbank erstellt. Dort existieren volgende spalten:

Name (Feldtyp)
ID (Autowert)
Text (Memo)
Toppic (Text)
Author (Text)
Datum (Text)
Email (Text)

Die datenbank heißt VSO

der Script sieht so aus

Code: Alles auswählen

def news_set(text,toppic,id):
    conn = odbc.odbc('VSO')
    cursor = conn.cursor()
    temp = 'SELECT Name FROM Members WHERE ID='+str(id)
    exec 'cursor.execute(temp)'
    name = cursor.fetchall()[0][0]
    print name
    cursor.execute('SELECT Email FROM Members WHERE ID='+str(id))
    email = cursor.fetchall()[0][0]
    cursor.execute('SELECT max(ID) FROM News')
    id = cursor.fetchall()
    id = id[0][0]
    id = id+1
    print id
        #__________________________Datum______________________________
    zeit = time.localtime(time.time())
    if zeit[6] == 0:
        tag = 'Mo'
    if zeit[6] == 1:
        tag = 'Di'
    if zeit[6] == 2:
        tag = 'Mi'
    if zeit[6] == 3:
        tag = 'Do'
    if zeit[6] == 4:
        tag = 'Fr'
    if zeit[6] == 5:
        tag = 'Sa'
    if zeit[6] == 6:
        tag = 'So'
    datum = tag+', '+str(zeit[2])+'.'+str(zeit[1])+'.'+str(zeit[0])
Bis hier geht alles

Code: Alles auswählen

    temp1 = 'INSERT INTO News VALUES('+str(id)+', '+text+', '+toppic+', '+name+', '+datum+', '+email+')'
    exec 'cursor.execute(temp1)'
    cursor.close()
    conn.close()
    return 1
Nun kommt volgende Fehlermeldung:
Traceback (innermost last):
File "<pyshell#3>", line 1, in ?
news_set('News','Toppic',1)
File "D:\clanpage\cppy\cgi-bin\schnitt.py", line 53, in news_set
exec 'cursor.execute(temp1)'
File "<string>", line 1, in ?
dbi.program-error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'VSO-LuScHe@gmx.de'. in EXEC
Warum :?:
Auch wenn ich denn execute-befehl so schreibe geht es net:

Code: Alles auswählen

cursor.execute(INSERT INTO News VALUES('+str(id)+', '+text+', '+toppic+', '+name+', '+datum+', '+email+')')
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Hallo,

du musst, soweit ich weiss, bei einem Insert die VALUES "Quoten"

der Insert alleine muss so aussehen:

Code: Alles auswählen

INSERT INTO News VALUES('test', 'test', 'test', 'test')
Jedes value muss mit -> ' <- gequotet werden. Das machst du scheinbar nicht. Versuche es, aber ich kann nicht garantieren, dass es geht...
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
inchie
User
Beiträge: 9
Registriert: Freitag 28. März 2003, 12:28

Hi,
also wenn ich richtig gelesen habe ist 'ID' ein Autowert, meine kenntnisse mit Datenbanken waren nie dort per Hand was einfügen deswegen auch 'AUTOWERT'( wird von der Datenbank automatisch erstellt):?:
ist es nicht besser wenn du schreibst
query = "INSERT INTO News (Text,Toppic,Author,Datum,Email) VALUES(%s,%s,%s,%s,%s)"
exec 'cursor.execute(query,(text,toppic,name,datum,email))'


so müßte was draus werden,
gruß inchie
Antworten