PyOdbc Cursor から完全に参照された列名を取得したいと思います。たとえば、2 つの単純なテーブルがあるとします。
Table_1(Id, < some other fields >)
Table_2(Id, < some other fields >)
結合されたデータを取得したい
select * from Table_1 t1, Table2 t2 where t1.Id = t2.Id
次のように、pyodbc を使用します。
query = 'select * from Table_1 t1, Table2 t2 where t1.Id = t2.Id'
import pyodbc
conn_string = '<removed>'
connection = pyodbc.connect(conn_string)
cursor = connection.cursor()cursor.execute(query)
次に、列名を取得します。
for row in cursor.description:
print row[0]
しかし、これを行うと、Id
2回取得しますが、これは望ましくありません。t1.Id
理想的にt2.Id
は、出力を得ることができました。
私が考えた解決策のいくつか (そして、私が実際にそれらを実装したくない理由):
- クエリの列の名前を変更します - 私の実際のユースケースでは、数十のテーブルがあり、中には頻繁に変更される数十の行があるものもあります
- クエリを解析し、SQL クエリの生成を自動化します (基本的に、テーブルのクエリをチェックし、cursor.tables 関数を使用して列を取得し、
select *
名前付き列のセットに置き換えます) - 私も持っている場合は、これを行いますが、テスト用ハーネスとしてはやり過ぎのようです
より良い方法はありますか?アドバイスをいただければ幸いです。