在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 :
'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 = '/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=***, @引數2='yyy'......")
cur.fetchone() #如果該儲存過程中有返回結果集,可以呼叫此句,如果儲存過程是return,則pymssql不支援,無法獲取,此句錯誤
conn.commit() #如果沒有此句,則資料並沒有真正生效,比如儲存過程是執行insert的,沒有commit的話,並不會真正插入資料
一般通過此三步即可以應對很多使用儲存過程的要求
對於儲存過程傳出資料的方法還有如下的討論:
C 如何執行儲存過程
以oracle為例,其它資料庫僅改變資料庫物件就可以。下面是帶引數的,不帶引數的話paramete為null即可。引數對應 public static int uploadstartclosesoftinfo string args return sdprovider.runprocedure 儲存...
C 如何執行儲存過程
以oracle為例,其它資料庫僅改變資料庫物件就可以。下面是帶引數的,不帶引數的話paramete為null即可。引數對應 public static int uploadstartclosesoftinfo string args oracleparameter parameter1 new or...
ASP中如何執行儲存過程?
1.什麼是儲存過程?儲存過程是sql server所提供的tranact sql語言所編寫的程式。2.如何建立儲存過程?create procedure employeeid orders employeeid as int as select from orders where employeei...