PyOdbcカーソルから完全に参照されている列名を取得したいと思います。たとえば、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
を取得できます。
私が考えた解決策のいくつか(そしてなぜ私がそれらを本当に実装したくないのか):
select *
を名前付き列のセットに置き換えます)-私も持っている場合これを行いますが、テストハーネスにはやり過ぎのようですもっと良い方法はありますか?何かアドバイスをいただければ幸いです。
# columns in table x
for row in cursor.columns(table='x'):
print row.column_name
www.PyOdbc wiki APIドキュメントは便利です
これが私のやり方です。
import pyodbc
connection = pyodbc.connect('DSN=vertica_standby', UID='my_user', PWD='my_password', ansi=True)
cursor = connection.cursor()
for row in cursor.columns(table='table_name_in_your_database'):
print row.column_name
DSN(データソース名)を2つのファイルで設定する必要があります。 odbc.iniおよびodbcinst.ini