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 を渡す必要はない。







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