在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如何执行存储过程,获取存储过程返回值...相关推荐

  1. python执行cmd并返回是否成功_python脚本执行CMD命令并返回结果的例子

    最近写脚本的时想要用python直接在脚本中去执行cmd命令,并且将返回值打印出来供下面调用,所以特意查了下,发现主要有一下几种方式来实现,很简单: 就拿执行adb, adb shell, adb d ...

  2. python 调用控制台并获取返回结果_python脚本执行CMD命令并返回结果的例子

    最近写脚本的时想要用python直接在脚本中去执行cmd命令,并且将返回值打印出来供下面调用,所以特意查了下,发现主要有一下几种方式来实现,很简单: 就拿执行adb, adb shell, adb d ...

  3. python网页查询然后返回结果_python(30) 获取网页返回的状态码,状态码对应问题查询...

    获取访问网页返回的状态码 html = requests.get(Url) respon= html.status_code 以下内容来自于维基百科:点击查看网页 1xx消息 这一类型的状态码,代表请 ...

  4. 音频和视频信息在计算机内的表示形式是什么,声音与视频信息在计算机内的表现形式是什么...

    声音与视频信息在计算机内的表现形式是二进制形式的数字.在计算机内部,指令和数据都是用二进制0和1来表示,因此,计算机系统中信息存储.处理也都是以二进制为基础的.而声音与视频信息在计算机系统中只是数据的 ...

  5. 【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 拷贝 DEX 文件到内置存储 | 加载并执行 DEX 字节码文件 )

    文章目录 一.拷贝 Assets 目录下的 classes.dex 字节码文件到内置存储区 二.加载 DEX 文件并执行其中的方法 三.MainActivity 及执行结果 四.博客资源 一.拷贝 A ...

  6. 小数在计算机中的存储形式

    本篇的目的就是为了让更多的人了解浮点数存储的基本原理,还是那句话,学习的同时带着思考.同样这里不讨论浮点数的精度损失和数值的计算理论.直接讲实质的表现. 上节讲到,C语言中的小数可以使用指数形式来表示 ...

  7. angularjs 获取复选框的值_侠客行第二季来袭,教你如何快速获取侠名值_DNF游戏新闻 - 地下城与勇士 - DNF...

    导读侠客行这个活动相信大家都不陌生,前不久第一季侠客行刚刚结束,经过短暂的调整,第二季侠客行再次上线,这次侠客行的奖励和第一季相比还是有所差异的,虽然没有天空可以兑换,但是其他奖励也是不错的,下面就来 ...

  8. python 按键获取_Python中按键来获取指定的值

    Python中按键来获取值,相对来说要容易些,毕竟只需要dict[key]就可以找到,但里面同样有个问题,如果其中的键不存在的话,会抛出异常,如果不用try...except...等异常处理机制的话, ...

  9. 描述计算机内的存储单位及换算关系,计算机存储单位换算

    1) 在学习计算机时,我们常听到1K,1M,1G bit(比特)是计算机中表示数据的最小单位,经常听到的16位机.32位机,就是指比特. Byte(字节)是计算机处理数据的单位,计算机以字节为单位处理 ...

最新文章

  1. python csv模块心得
  2. [Python Study Notes] Python的安装
  3. 探究实现中断下半部分的第四种方式
  4. 异常解决(一)-- RuntimeError: expected device cpu but got device cuda:0
  5. ICPR 2020国际学术竞赛:大规模无噪声精细商品图像识别
  6. 300+队伍/8大直播间,这场NXP智能车竞赛谁才是真的神车?
  7. [深度学习]CNN--卷积神经网络中用1*1 卷积有什么作用
  8. UNIX网络编程:I/O复用技术(select、poll、epoll)
  9. python supervisor flask_supervisor配合uwsgi部署flask应用
  10. 服务器报告它来自digest_2020年全球服务器市场规模及竞争格局分析
  11. 1月20日到期的5.2万美元比特币期权数量超1万份
  12. 《恋上数据结构第1季》动态扩容数组原理及实现
  13. SpringMVC路径配置
  14. 2.3Word2003段落设置1
  15. 2019 CCF 推荐 期刊 列表
  16. linux 安装 navicat
  17. Excel 解决高次方程求解的方法
  18. Java开发技巧!整理了3家面试问题:美团+字节+腾讯,工作感悟
  19. Win10鼠标点一下文件夹或文件没有选中的那个蓝色,但还是能正常用,比如双击跟右键,点一下也有详细信息
  20. 汽车智能安装仿真测试软件,智能网联汽车仿真测试平台建设.pdf

热门文章

  1. 数据库元数据数据字典查询_7_列出给定表的检查约束
  2. FPGA与MCU,DSP(如C6000,C5000等)等设计思想的异同
  3. C语言中编译、生成、调试、运行的区别
  4. 微信 登录 Scope 参数错误或没有 Scope 权限
  5. iOSTableview 禁止下拉,允许上拉
  6. Html----编写
  7. 【ARM】一步一步移植Linux Kernel 2.6.13到板子
  8. 将用int型存储的时间转换成time时间格式笔记
  9. JWT实现token-based会话管理
  10. ☆聊聊Spring系列_Index