この記事では、Python でストアド プロシージャを実行し、ストアド プロシージャの戻り値を取得する方法を主に紹介し、Python でストアド プロシージャを呼び出す一般的な方法と、関連する操作上の注意事項をサンプルの形式でまとめて分析します。この記事の例へ
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. pmssql を使用します
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 ステートメントを記述する必要はありませんが、返されたエラー コードを取得できません。返されたエラー メッセージを取得することしかできません。あるいは、方法が見つからない可能性もあります 2. 1つ目とは逆に、pymssqlは戻り値とエラーメッセージを取得できますが、SQL文を記述する必要があります。 ここではponymsqlを使う方法に焦点を当てますcur.execute("execストアドプロシージャ名@parameter1=XXX, @parameter2='YYY'...")
cur.fetchone()は、このストアド プロシージャに設定された戻り値です。この文は、ストアド プロシージャがサポートしていないため、取得できません。 #このような文が存在しない場合。たとえば、コミットを行わないと、データは実際には有効になりません。一般的に、これらの 3 つの手順を使用して、ストアド プロシージャを使用するための多くの要件に対処できます。
以上がPythonでストアドプロシージャを実行して戻り値を取得する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。