2011-03-02 2 views
0

外部変数を使用するためにMySQLでストアドプロシージャを設定する方法を教えてください。 私は以前にSPを書いたことがありますが、extenal入力では書かれていません。 pyODBCから接続文字列が来ています。PythonとMySQLでのストアドプロシージャの変数の使用

次に、Pythonを使用して、そのSpを呼び出してその変数を入力する方法はありますか?

あなたはMySQLdbはを使用していると仮定すると、
cursor.execute('Call d.MySP' ????) 

答えて

2

the docsによると、呼び出しは次のようになります。

cursor.callproc('d.MySP',args) 

フードの下PEEKは、変数が設定されているとCALL陳述が行われる方法を示しています。

def callproc(self, procname, args=()): 
    from types import UnicodeType 
    db = self._get_db() 
    charset = db.character_set_name() 
    for index, arg in enumerate(args): 
     q = "SET @_%s_%d=%s" % (procname, index, 
            db.literal(arg)) 
     if isinstance(q, unicode): 
      q = q.encode(charset) 
     self._query(q) 
     self.nextset() 

    q = "CALL %s(%s)" % (procname, 
         ','.join(['@_%s_%d' % (procname, i) 
            for i in range(len(args))])) 
    if type(q) is UnicodeType: 
     q = q.encode(charset) 
    self._query(q) 
    self._executed = q 
    if not self._defer_warnings: self._warning_check() 
    return args 
+0

私はpyodbcを使用しています.... thatsたくさんのものを介して作業.... – Merlin

+0

SQLのサイドコードについてはどうですか? – Merlin

+0

ストアドプロシージャは 'cursor.execute'を呼び出すことで定義できます。 – unutbu

関連する問題