0
我正在运行以下内容:Windows 7,Python 2.5和SQL Server 2005,SQLNCLI作为提供程序。我有一个表,它的名字是TABLE,它的字段是FIELD0,FIELD1,FIELD2。这是一个Python或SQL服务器错误?
你可以在这里找到SQLNCLI.msi:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d09c1d60-a13c-4479-9b91-9e8b9d835cdc&displaylang=en
我attemting使用存储过程。其目的是更新一行,或者如果它不存在,则插入它。 当它到达插入语句时,所有内容都会出错,但插入成功。下面是代码:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create procedure [dbo].[TEST0]
@FIELD0 varchar(200)
as
begin
declare @exist varchar(MAX)
set @exist = (select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0)
if @exist is null
begin
insert into [TABLE] ([FIELD0],[FIELD1],[FIELD2]) values (@FIELD0,'FIELD1','FIELD2')
select top 1 [FIELD0] from [TABLE]
where
[FIELD0] = @FIELD0
return 10
end
else
select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0
end
要查看错误运行此Python代码的两倍;第一次失败了,但第二次它成功:
from win32com.client import Dispatch
dbConn = Dispatch("ADODB.Connection")
dbConn.Open("server=xx.xx.xx.xx; initial catalog=MYDB; user=myuser; password=mypass; provider=SQLNCLI")
command = Dispatch('ADODB.Command')
command.ActiveConnection = s.dbConn
command.CommandText = "[TEST0]"
command.CommandType = 4
param0 = command.CreateParameter ('@FIELD0',200,1,200,'VALUE')
command.Parameters.Append(param0)
print param0
(rs, result) = command.Execute()
while not rs.EOF:
dic = {}
for field in rs.Fields :
dic[str(field.name)] = str(field.value)
print dic
rs.MoveNext()
我们不打算安装的东西来测试你的代码为您服务!请做一些更多的工作,缩小一小段代码中的错误,然后发布完整的错误信息或缺少完整的错误信息(应该发生什么?发生了什么?你得到了什么错误?你是否尝试在调试器?然后发生了什么?) – katrielalex 2010-11-04 23:47:22
我已经安装了测试用户代码=)的东西。我已经解决了这个问题 – Delta 2010-11-05 00:00:10
什么是错误信息?如果您在存储过程中取消返回10行,它是否仍然会发生?在旁注:这将在高并发下失败。 – 2010-11-05 00:08:37