Die übergabe von Parametern zu Gespeicherten Prozeduren mithilfe von PyODBC

Ich bin mit pyODBC, um eine Verbindung zu einem SQL Server 2005 express-Datenbank. Ich habe eine gespeicherte Prozedur in SQL Server express, das dauert 2-string-Parameter e.g stored_proc(inpu1, input2) diese Parameter sind vom Typ datetime. Ich habe getestet die gespeicherte Prozedur mithilfe von management studio und es tut Rückkehr, ein entsprechendes Ergebnis. Aber wenn ich versuche, rufen Sie die gespeicherte Prozedur von python(ich benutze Eclipse) bekomme ich die Fehlermeldung.

pyodbc.DataError: ('22018', '[22018] [Microsoft][SQL Native Client]Ungültiger Zeichenwert für Konvertierungsangabe (0) (SQLExecDirectW)')2/9/2011 12:00:03 2/9/2011 12:20:03

Die Funktion rufe ich wie folgt:

def GetAlarmFrequencyTime(tstart,tend): 

print tstart, tend  
arguments=(tstart,tend)
local_cursor=conn.cursor()
local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}")

resultset_rows=local_cursor.fetchall()
print "There are" , len(resultset_rows), "records"
for single_row in resultset_rows:
    print "|" ,single_row[0], "|" ,single_row[1],"|" 

local_cursor.close()

Die Zeile, die Schwierigkeiten verursacht, ist

local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}") 

kann mir jemand helfen zu verstehen, wie kann ich das übergeben mehrere Parameter an eine gespeicherte Prozedur aufgerufen, mit pyODBC.
Muss ich konvertieren, tstart, und neigen dazu, in einen datetime-format zuerst, wenn ja wie? Ich habe abgerichtet strptime, aber auch das ist nicht gelungen, obwohl ich mit es falsch

  • Ich habe das Spiel ein wenig und fand local_cursor.execute("call dbo.GetAlarmEventHistoryFrequency_Timerange(?,?)}",[dt_start],[dt_end]) im Grunde die syntax scheint zu sein, "rufen Sie stored_proc(?),[params]. Nun ich denke, das ist es, aber wenn ich Laufe, bekomme ich eine Unbehandelte Win32-Ausnahme in Python.exe. Hat jemand experirence mit pyODBC auf windows mit Hilfe von Python 2.7?
InformationsquelleAutor user595985 | 2011-10-19
Schreibe einen Kommentar