【发布时间】:2011-10-19 15:51:20
【问题描述】:
我正在使用 pyODBC 连接到 SQL Server 2005 express 数据库。我在 SQLServer express 中创建了一个存储过程,它采用 2 个字符串参数,例如 stored_proc(inpu1, input2) 这些参数的类型是日期时间。我已经使用管理工作室测试了存储过程,它确实返回了适当的结果。但是,当我尝试从 python 调用存储过程(我正在使用 Eclipse)时,我得到了错误。
pyodbc.DataError: ('22018', '[22018] [Microsoft][SQL Native Client]强制转换规范 (0) (SQLExecDirectW) 的字符值无效')2/9/2011 12:00:03 2/ 9/2011 12:20:03
我调用的函数如下:
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()
导致问题的行是
local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}")
谁能帮助我了解如何将多个参数传递给使用 pyODBC 调用的存储过程。 我是否需要转换 tstart,并首先倾向于日期时间格式,如果需要如何?我已经验证了strptime,但即使这样也没有成功,虽然我可能用错了
【问题讨论】:
-
我玩了一下,发现 local_cursor.execute("call dbo.GetAlarmEventHistoryFrequency_TimeRange(?,?)}",[dt_start],[dt_end]) 基本上语法似乎是“调用stored_proc(?),[params]。现在我想就是这样,但是当我运行时,我在 Python.exe 中得到一个未处理的 Win32 异常。有没有人在 Windows 上使用 Python 2.7 使用 pyODBC 的经验?
标签: python sql-server-2005 pyodbc