Maison  >  Article  >  développement back-end  >  Introduction aux méthodes d'exécution de procédures stockées et d'obtention de valeurs de retour en Python

Introduction aux méthodes d'exécution de procédures stockées et d'obtention de valeurs de retour en Python

黄舟
黄舟original
2018-05-24 11:06:214300parcourir

Cet article présente principalement la méthode d'exécution des procédures stockées et d'obtention de la valeur de retour des procédures stockées en Python. Il résume et analyse les méthodes courantes d'appel des procédures stockées en Python et les précautions d'opération associées sous forme d'exemples. peut s'y référer

L'exemple de cet article décrit la méthode d'exécution des procédures stockées et d'obtention de la valeur de retour des procédures stockées en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Comment exécuter des procédures stockées dans Pathon ? Vous pouvez utiliser la méthode suivante :

La définition de la procédure stockée est essentiellement la suivante :

ALTER  procedure [dbo]. [mysp]
 @Station varchar ( 50),
 @SN varchar ( 50),
 @Info varchar ( 500) output ,
@Msg varchar ( 500) output

1. Utilisez 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. Utilisez 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

Résumé :

1. adodbapi est simple, il n'est pas nécessaire d'écrire une série d'instructions SQL, mais je ne parviens pas à obtenir le code d'erreur renvoyé, je ne peux obtenir que le message d'erreur renvoyé, ou peut-être que je n'ai pas trouvé la méthode

2. pymssql est l'opposé du premier, vous pouvez obtenir une valeur de retour et un message d'erreur, mais écrire une instruction SQL.

Ici, nous nous concentrons sur la méthode d'utilisation de pymssql

cur.execute("exec stocké procédure nom@paramètre 1=XXX, @paramètre 2='YYY'...") # Si une telle phrase n'existe pas, les données ne prennent pas vraiment effet. Par exemple, la procédure stockée exécute insert. Sans validation, les données ne seront pas réellement insérées

Généralement, de nombreuses exigences liées à l'utilisation de procédures stockées peuvent être remplies. à travers ces trois étapes

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn