So-net無料ブログ作成
検索選択

ADODBAPI で SQLServer にアクセス [Python/Django/Zope]

VBScript でごまかしていたけど、ちょっとややこしいことをしたいので Python が使いたくなった。
必要に迫られて試してみたのでメモしておく。

【インストール】
そもそも、Win32版の python じゃないとだめ。
さらに、win32com モジュールが必要なので、win32com モジュールが入ってない場合は、
Win32 Extensions をインストールする
http://python.net/crew/skippy/win32/Downloads.html

次に、adodbapi のインストール
ここ↓からたどり着けるところから、adodbapi-2.0.1.zip をダウンロード。
http://sourceforge.net/projects/adodbapi
zip ファイルを解凍して中にある setup.bat を実行したらインストール完了。
(adodbapi を site-packages にコピーしてもいいんだと思う)

【使い方】
いつも接続文字列の指定の仕方が判らなくなるので、ここで使い方を例示しておくことにする。
(データーベースが SQL Server の場合)

import adodbapi
conn_str = """Provider=SQLOLEDB;
        Data Source=db_host;
        User ID=bob;
        Password=secret;
        Initial Catalog=TestDB"""
conn = adodbapi.connect(conn_str)
cur = conn.cursor()
cur.execute("select name from member")
for c in cur.fetchall():
    print c[0].encode('cp932')

最後の行の print c[0].encode('cp932') の代わりに print c[0] でもコンソールには表示されるが、ファイルにリダイレクトするときに破綻する。つまり、結果が unicode で返される。
多分、SQL文に日本語が含まれる場合は execute に unicode 文字列で渡す必要があるだろう(試してないけど)。サンプルのように SQL文が ASCII 文字だけなら大丈夫。

ユーザー foo のデフォルトデーターベースに接続すればよいのであれば、パラメータ Initial Catalog を渡す必要はない。


nice!(0)  コメント(3) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 3

Fomalhaut

SQL Server にアクセスできるようにする
Python Extension を探していたので助かりました。

Python2.4 と2.5 の win32all はこちらにおいてあるようです↓
https://sourceforge.net/project/showfiles.php?group_id=78018
by Fomalhaut (2006-05-20 10:55) 

ai

SQL Serverにアクセスしようと奮闘しているのですが、
うまく出来ません。

教えていただきたいのですが、
以下の構文で、

conn_str = """Provider=SQLOLEDB;
Data Source=db_host;
User ID=bob;
Password=secret;
Initial Catalog=TestDB"""

「Provider」、「Data Source」、「User ID」、「Password」、「Initial Catalog」の
設定値は、どのように調べれば良いのでしょうか?

お手数をおかけします、よろしくお願いします。
by ai (2006-06-08 10:26) 

nakagami

Provider は、SQLServer なら常に SQL OLEDB です。
Data Source っていうのは、SQLServer の動いている Windows サーバーですよ
Initial Catalog は、接続したいデーターベースの名前です。
by nakagami (2006-06-11 19:50) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。