python获取数据库的存储过程_python远程调用sqlserver存储过程记录
開發(fā)中需要python遠(yuǎn)程調(diào)用sqlserver存儲(chǔ)過程。搜索了網(wǎng)上有兩種方式,pymssql和pyodbc。開始采用第一種方式開發(fā),不過無法拿到存儲(chǔ)過程中的返回?cái)?shù)據(jù),后采用pyodbc開發(fā),當(dāng)然存儲(chǔ)過程中返回?cái)?shù)據(jù)并不是直接return返回,需要設(shè)定一個(gè)output類型的參數(shù),然后在結(jié)束時(shí)設(shè)置該參數(shù)并select一把方可得到返回。網(wǎng)上也有另外一種思路,寫個(gè)存儲(chǔ)過程中間件調(diào)用目標(biāo)存儲(chǔ)過程避免每有返回就得select的情況,該方法為驗(yàn)證。
pymssql 調(diào)用代碼
try:
#客戶姓名 客戶消費(fèi)的店名 貨物ID 領(lǐng)取物資的數(shù)量
conn = pymssql.connect(host=host,user=user,password=pwd,
database=db,port=port,charset="utf8")
cur = conn.cursor()
if not cur:
raise(NameError,"連接數(shù)據(jù)庫失敗")
else:
sql=['set nocount on']
sql.append("exec salesUseMoney @name=%s,@tradName =%s,@goodsid=%s,@quantity=%s,@result=0")
sql.append('declare @return_value int')
sql.append("exec salesUseMoney @name='%s',@tradName ='%s',@goodsid='%s',@quantity=%s,@result=@return_value OUTPUT")
sql.append('select return_result=@return_value')
sql='\n'.join(sql)%(name,tradName,goodsid,quantity)
print sql
result=cur.execute(sql)
print result
result=conn.commit() #提交修改
print result
result=cur.nextset()
print result
print cur.fetchall()
print cur.fetchone()
"""
rows=cur.execute("select storeid,name from store where shopid=13 and upflag=0 and closed='F'")
print rows
print cur.fetchall()
"""
except Exception,e:
print e
finally:
try : conn.close()
except : pass
pyodbc調(diào)用代碼:
try:
#客戶姓名 客戶消費(fèi)的店名 貨物ID 領(lǐng)取物資的數(shù)量
connStr="DRIVER={SQL Server};SERVER=%s,%s;DATABASE=%s;UID=%s;PWD=%s"%(host,port,db,user,pwd)
conn = pyodbc.connect(connStr)
cur = conn.cursor()
if not cur:
raise(NameError,"連接數(shù)據(jù)庫失敗")
else:
sql="""
exec salesUseMoney @name="%s",@tradName="%s",@goodsid=%s,@quantity=%s,@result=0;
"""%(name,tradName,goodsid,quantity)
print sql
cur.execute(sql)
result=cur.fetchone()[0]
conn.commit() #提交修改
except Exception,e:
print e
result=-1
finally:
try : conn.close()
except : pass
return result
總結(jié)
以上是生活随笔為你收集整理的python获取数据库的存储过程_python远程调用sqlserver存储过程记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 作用with_即使__in
- 下一篇: python的scramy架构_Scra