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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich, zu arbeiten, ohne abzustürzen
ist die falsche syntax. Es sollte
Besondere Aufmerksamkeit sollte auf die speziellen Symbolen {} und die Art, wie die Parameter übergeben werden (tstart),(tendenziell) local_cursor.execute("*{*call dbo.GetAlarmEventHistoryFrequency_Timerange*(?,?)}",(tstart),(neigen)*)