web-dev-qa-db-ja.com

pythonのMySQLストアドプロシージャをフィールド名で呼び出す

単一の行を返すMySQLストアドプロシージャを呼び出そうとしています。cursor.callproc()およびcursor.stored_results()を使用して値を戻すことができますが、フィールドの名前を戻すことはできません。 「fileHash」

SPを直接呼び出すと、次のような結果が得られます。

mysql> call GetAllFileHashesForDirectory('/myroot/');
+------------------+
| fileHash         |
+------------------+
| testa            |
| testb            |
+------------------+
2 rows in set (0.00 sec)

しかし、フィールド名を取得しようとすると、「fileHash」の代わりに次のようになります。

(u'@_GetAllFileHashesForDirectory_arg1',)

値を取得するために使用するpythonコードは次のとおりです。

self.__mySQLCursor.column_names

ストアドプロシージャで名前を指定する必要がありますか?私は本当に混乱しています。

1
Paul Morriss

ストアドプロシージャのロジックをSELECT 'fileHash'次に UNION ストアドプロシージャの他のクエリから他の値を返し、最初に返される行がfileHashであることを確認するクエリの場合

SELECT 'fileHash'
UNION 
SELECT <column> FROM <table>

出力

+------------------+
| fileHash         |
+------------------+
| fileHash         |
| testa            |
| testb            |
+------------------+
0
Pimp Juice IT