Problem mit SQL-Statement
Hallo Liste, ich dilettiere mit SQL-Statements für eine Kundenanwendung und habe bei folgendem Script Probleme (XP, Python 2.4): from win32com.client import Dispatch from adoconstants import * oConn = Dispatch(r"ADODB.Connection") sDBName = r"D:\Temp\TSProduktion.mdb" DSN = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+ sDBName + ";" oConn.Open(DSN) rs = Dispatch(r"ADODB.Recordset") Data = "Testdaten1" dbField = "Longname" rs.Open("SELECT * FROM tblProduktion WHERE dbField = '" + Data + "' ", oConn) rs = None oConn.Close() oConn = None Python meckert: Traceback (most recent call last): File "C:\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript exec codeObject in __main__.__dict__ File "d:\fl macros\DBTestNeu.py", line 10, in ? rs.Open("SELECT * FROM tblProduktion WHERE dbField = '" + Data + "' ", oConn) File "<COMObject ADODB.Recordset>", line 4, in Open com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, 'Microsoft JET Database Engine', 'F\xfcr mindestens einen erforderlichen Parameter wurde kein Wert angegeben.', None, 5000000, -2147217904), None) Kann mir jemand einen Tip geben? Vielen Dank im Voraus. Uwe Führmann _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hi Uwe, kenne mich zwar nicht mit ADO aus, sollte aber mit den meisten anderen DB das gleiche Problem sein. Versuche erst einmal einen SQL direkt über python an die DB zu schicken. Z.B.: sql = "SELECT * FROM tblProduktion WHERE dbField = '%s'" % Data rs.Open(sql,oConn) Sollte es weiter Probleme geben, lass Dir sql ausgeben und schick ihn an die Datenbank in deren Abfragetool. Manchmal gibt es Fehlermeldungen, wenn Tabellen nicht gefunden werden oder es keine Rückgabewerte gibt. Prinzipiell sieht die Fehlermeldung danach aus, als sei die Abfrage nicht korrekt gelaufen. Hoffe, dass ich helfen konnte, Volker _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hallo Uwe, On 2006-11-07 15:36, Uwe Führmann wrote:
ich dilettiere mit SQL-Statements für eine Kundenanwendung und habe bei folgendem Script Probleme (XP, Python 2.4):
from win32com.client import Dispatch
from adoconstants import *
oConn = Dispatch(r"ADODB.Connection")
sDBName = r"D:\Temp\TSProduktion.mdb"
DSN = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+ sDBName + ";"
oConn.Open(DSN)
rs = Dispatch(r"ADODB.Recordset")
Data = "Testdaten1"
dbField = "Longname"
du weißt dbField hier einen Wert zu. Wolltest du den im Query unten einsetzen?
rs.Open("SELECT * FROM tblProduktion WHERE dbField = '" + Data + "' ", oConn)
Ein Tipp: Nie Werte direkt in die SQL-Anweisung einbauen, sondern als Extra-Parameter übergeben ( http://www.python.org/dev/peps/pep-0249/ ). Das ist vor allem essenziell, wenn die Daten nicht aus einer vertrauens- würdigen Quelle stammen, aber auch sonst, wenn Sonderzeichen wie \ oder ' in den Daten selbst enthalten sein können. Du verwendest hier keine Schnittstelle, die nach der DB-API 2.0 aussieht. Ich hoffe, es gibt die Funktionalität trotzdem.
rs = None
oConn.Close()
oConn = None
Python meckert:
Traceback (most recent call last):
File "C:\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "d:\fl macros\DBTestNeu.py", line 10, in ?
rs.Open("SELECT * FROM tblProduktion WHERE dbField = '" + Data + "' ", oConn)
File "<COMObject ADODB.Recordset>", line 4, in Open
com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, 'Microsoft JET Database Engine',
'F\xfcr mindestens einen erforderlichen Parameter wurde kein Wert angegeben.', None, 5000000, -2147217904), None)
Gibt es einen Befehlszeilenclient, in den man das Query eingeben kann? Vielleicht ist es gar kein Python-Problem. Was sagt die Dokumentation zur Bedeutung der Werte in dem Tupel? Viele Grüße Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Stefan Schwarzer
-
Uwe Führmann
-
Volker Helm