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随机生成指定长度密码的方法
Apr 04 Python
python获取文件扩展名的方法
Jul 06 Python
浅谈Python的文件类型
May 30 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
利用python开发app实战的方法
Jul 09 Python
使用django实现一个代码发布系统
Jul 18 Python
提升python处理速度原理及方法实例
Dec 25 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
python next()和iter()函数原理解析
Feb 07 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
python爬虫实例之获取动漫截图
May 31 Python
如何解决python多种版本冲突问题
Oct 13 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
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
php实现微信扫码支付
2017/03/26 PHP
js如何实现设计模式中的模板方法
2013/07/23 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
js实现弹窗居中的简单实例
2016/10/09 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
python reduce 函数使用详解
2017/12/05 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Python pandas库中的isnull()详解
2019/12/26 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python中如何使用虚拟环境
2020/10/14 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
毕业生求职推荐信
2013/11/04 职场文书
会计岗位描述
2014/02/22 职场文书
个人求职自荐信范文
2014/06/20 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
三严三实心得体会范文
2014/10/13 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python