Python中执行存储过程及获取存储过程返回值的方法


Posted in Python onOctober 07, 2017

本文实例讲述了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语句,但是不能取到返回的Error Code,只能取到返回的错误信息,也可能是我没找到方法

2. pymssql与第一条相反,可以取到返回值和错误信息,但要写sql语句。

这里重点说明一下使用pymssql的方法

cur.execute("exec 存储过程名 @参数1=XXX, @参数2='YYY'......")
cur.fetchone()        #如果该存储过程中有返回结果集,可以调用此句,如果存储过程是return,则pymssql不支持,无法获取,此句错误
conn.commit()        #如果没有此句,则数据并没有真正生效,比如存储过程是执行insert的,没有commit的话,并不会真正插入数据

一般通过此三步即可以应对很多使用存储过程的要求

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python里 super类的工作原理详解
Jun 19 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
Python中使用gflags实例及原理解析
Dec 13 Python
python 一维二维插值实例
Apr 22 Python
python OpenCV学习笔记
Mar 31 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 #Python
深入理解Django中内置的用户认证
Oct 06 #Python
Python3学习笔记之列表方法示例详解
Oct 06 #Python
python获取外网IP并发邮件的实现方法
Oct 01 #Python
Python之自动获取公网IP的实例讲解
Oct 01 #Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 #Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 #Python
You might like
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python如何实现视频转代码视频
2019/06/17 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
thinkphp5 路由分发原理
2021/03/18 PHP
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
大四自我鉴定
2014/02/08 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
工作试用期自我评价
2015/03/10 职场文书
圣诞晚会主持词
2015/07/01 职场文书
入队仪式主持词
2015/07/04 职场文书
小学生暑假安全公约
2015/07/14 职场文书
社区干部培训心得体会
2016/01/06 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书