Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

pyodbc Python ODBC ブリッジのサポート

pyodbc Python ODBC ブリッジのサポート

pyodbc は、DB API 2.0 仕様 (PEP 249 -- Python Database API Specification v2.0Opens in a new tab) を実装し、ODBC を活用して基盤となるデータベースにアクセスするオープン・ソース Python モジュールです。インターシステムズでは、リレーショナル・パラダイムを使用して Python からデータベースにアクセスする手段として、pyodbc の使用をサポートしています。このモジュールは、前のバージョンの InterSystems IRIS でも使用できます。一般情報は、pyodbc の GitHub サイトOpens in a new tabを参照してください。

Note:

DB API 2.0 のインターシステムズ固有の実装が InterSystems IRIS 2022.1 で導入されており ("Native SDK for Python の使用法" の “Python DB-API の使用法” を参照)、これをすべての新しい Python 開発で使用することが推奨されています。pyodbc 実装は引き続きサポートされ、古いバージョンの InterSystems IRIS に接続するクライアント・アプリケーションで必要となる場合があります。

インストール

Windows 向けおよび Linux および関連オペレーティング・システム向けのインストール情報が掲載されているサイトがいくつかあります。

インストール手順はシンプルです。

macOS X へのインストール

macOS X へのインストールは、UNIX® プラットフォームとほぼ同じです ("Python Releases for Mac OS XOpens in a new tab" を参照)。

  • homebrewOpens in a new tab をインストールします。

  • unixODBCOpens in a new tab をインストールします。

  • pip install を実行します。

       pip install --upgrade --global-option=build_ext 
       --global-option="-I/usr/local/include"  --global-option="-L/usr/local/lib" 
    

テスト・プログラム

以下のテスト・プログラムは、pyodbc を使用して InterSystems IRIS データベースにアクセスする方法を示しています。InterSystems ODBC ドライバでサポートされる接続キーワードを示した例については、“ODBC 初期化ファイルの構造” を参照してください。

test.py
import pyodbc 
import time

input("Hit any key to start")

dsn = 'IRIS Samples'
server = '127.0.0.1' 
database = 'USER' 
username = '_SYSTEM' 
password = 'SYS' 
#cnxn = pyodbc.connect('DRIVER={InterSystems ODBC35};SERVER='+server+'; 
#   PORT='+port+'; DATABASE='+database+';UID='+username+';PWD='+ password)
cnxn = pyodbc.connect('DSN='+dsn+';')
lowptr=cnxn.getinfo(127)
highptr=cnxn.getinfo(136)
#value = PyLong_FromUnsignedLongLong(lowptr)
#print("%#5.8x"% (value))

print ("Connection high pointer: ")
print (format(highptr, '02x'))
print ("Connection high pointer: ")
print("%#5.8x"% (highptr))
print ("Connection low pointer: ")
print("%#5.8x"% (lowptr))
cursor = cnxn.cursor()
start= time.perf_counter()


#Sample select query
cursor.execute("SELECT * from Sample.Person") 
row = cursor.fetchone() 
#while row: 
#    print(row) 
#    row = cursor.fetchone()

end= time.perf_counter()
print ("Total elapsed time: ")
print (end-start)
input("Hit any key to end")

以下のように変更することで、Unicode データが返されなくなり、UTF-8 データが直接返されます。

   cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='latin1')
   cnxn.setencoding(str, encoding='latin1')

ここでは、対象を絞ったドライバを使用することで、ドライバ・マネージャが UCS-2 または UCS-4 の Unicode を使用するのを回避すると共に、特定のドライバ・マネージャの構築方法に合ったドライバを提供することによる複雑さを回避します。他の Unicode オプションについては、pyodbc Wiki の Unicode のセクションOpens in a new tabを参照してください。

FeedbackOpens in a new tab