이 글은 주로 Python에서 저장 프로시저를 실행하고 저장 프로시저의 반환 값을 얻는 방법을 소개합니다. Python에서 저장 프로시저를 호출하는 일반적인 방법과 관련 작업 주의 사항을 예제 형식으로 요약하고 분석합니다. 이 글의 예제
Python에서 저장 프로시저를 실행하고 저장 프로시저의 반환 값을 얻는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
Pathon에서 저장 프로시저를 실행하는 방법은 무엇입니까? 다음 방법을 사용할 수 있습니다.
저장 프로시저 정의는 기본적으로 다음과 같습니다.
ALTER procedure [dbo]. [mysp] @Station varchar ( 50), @SN varchar ( 50), @Info varchar ( 500) output , @Msg varchar ( 500) output
1. adodbapi
from adodbapi import connect server = 'dbserver' user = 'username' password = 'password' database = 'database' sp = 'sp' station = 'station' sn = 'sn' try : db = connect('Provider=SQLOLEDB.1 ;Data Source=%s;Initial Catalog=%s;/ User ID=%s;Password=%s;'%(server, database, user, password)) except Exception, e: print e else : cur = db.cursor() msg = cur.callproc(sp, (station, sn)) #参数与存储过程有关 if len(msg) > 1 : if msg[-1 ] is None : print 'sn is ok. Can be test at this station' else : print msg[-1 ] finally : try : db.close() except : pass
2를 사용합니다. pymssql
from pymssql import connect server = 'dbserver' user = 'user' password = 'password' database = 'database' sp = 'sp' station = 'station' sn = 'sn' sql = ['set nocount on' ] sql.append('declare @Msg varchar(500)' ) sql.append('declare @return_value varchar' ) sql.append("exec @return_value = %s @Station = '%s', @SN = '%s', @Info = '@Info', @Msg = @Msg output" ) sql.append('select @Msg, @return_value' ) sql = '/n' .join(sql) % (sp, station, sn) def ffchk(server, user, password, database, sql): try : db = connect(host = server, database = database, user = user, password = password, login_timeout = 10 ) cur = db.cursor() cur.execute(sql) except Exception, e: print e else : cur.nextset() # 要加上这句才能通过fetch函数取到值 注意:这语句在Python2.7对应的pymssql版本中是错误!!! print cur.fetchone() finally : try : db.close() except : pass
요약:
1. adodbapi는 간단합니다. 일련의 SQL 문을 작성할 필요가 없지만 반환된 오류 코드를 얻을 수 없거나 반환된 오류 메시지만 얻을 수 있거나 방법을 찾지 못했을 수도 있습니다
2. 첫 번째와 달리 pymssql은 반환 값과 오류 메시지를 얻을 수 있지만 sql 문을 작성해야 합니다.
여기에서는 pymssql을 사용하는 방법에 중점을 둡니다
cur.execute("exec 저장 프로시저 이름@parameter1=XXX, @parameter2='YYY'...")
cur.fetchone() 거기 저장 프로시저에서 반환된 결과 집합입니다. 저장 프로시저가 반환되면 pymssql이 이를 지원하지 않으므로 이 문장을 얻을 수 없습니다.
conn.commit() #해당 문장이 없으면 잘못된 것입니다. 예를 들어 저장 프로시저가 삽입을 실행하면 커밋이 없으면 데이터가 실제로 삽입되지 않습니다. 일반적으로 이 세 단계를 사용하면 저장 프로시저를 사용하기 위한 많은 요구 사항을 처리할 수 있습니다.
위 내용은 Python에서 저장 프로시저를 실행하고 반환 값을 얻는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!