python return返回值在计算机内的存储形式_Python如何执行存储过程,获取存储过程返回值...
在Pathon中如何執行存儲過程呢?可以使用如下方法:
存儲過程定義基本如下:
ALTER procedure [dbo]. [mysp]
@Station varchar ( 50),
@SN varchar ( 50),
@Info varchar ( 500) output ,
@Msg varchar ( 500) output
1. 使用adodbapi
Python代碼
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
Python代碼
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語句,但是不能取到返回的Error Code,只能取到返回的錯誤信息,也可能是我沒找到方法
2. pymssql與第一條相反,可以取到返回值和錯誤信息,但要寫sql語句。
這里重點說明一下使用pymssql的方法
cur.execute("exec 存儲過程名 @參數1=XXX, @參數2='YYY'......")
cur.fetchone()??????? #如果該存儲過程中有返回結果集,可以調用此句,如果存儲過程是return,則pymssql不支持,無法獲取,此句錯誤
conn.commit()??????? #如果沒有此句,則數據并沒有真正生效,比如存儲過程是執行insert的,沒有commit的話,并不會真正插入數據
一般通過此三步即可以應對很多使用存儲過程的要求
對于存儲過程傳出數據的方法還有如下的討論:
http://zh-cn.w3support.net/index.php?db=so&id=191644
總結
以上是生活随笔為你收集整理的python return返回值在计算机内的存储形式_Python如何执行存储过程,获取存储过程返回值...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金定投买净值高的还是低的 注意基金未
- 下一篇: 临沂市二手房同比涨幅第一,二手房市场或将