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 相关文章推荐
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
Python实现微信翻译机器人的方法
Aug 13 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python实现批处理文件
Jul 28 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
德生PL550的电路分析
2021/03/02 无线电
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
Python内置函数delattr的具体用法
2017/11/23 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
外企求职信范文分享
2013/12/31 职场文书
后进生转化工作制度
2014/01/17 职场文书
中学生期末评语
2014/02/03 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
2015年司机工作总结
2015/04/23 职场文书
MySQL 原理与优化之Update 优化
2022/08/14 MySQL