Mac から Python を使って SQLServer をイジる

Macports で FreeTDS をインストール。

$ sudo port install freetds

/opt/local/etc/freetds/freetds.conf を編集。

[testserver]
        host = ホスト
        port = ポート
        tds version = 7.0
        charset = utf8
        client charset = utf8

ODBC アドミニストレータを起動して、ドライバタブからドライバを追加。以下、名前とかは適当に。

  • 説明:MSSQL
  • ドライバファイル:/opt/local/lib/libtdsodbc.so

次にユーザ DSN タブから DSN 追加。

  • ドライバ:MSSQL
  • データソース名(DSN):TestDSN
  • 説明:適当に
  • キーワード:
    • Servername:testserver
    • Database:接続データベース名

「適用」を押して完了。

ターミナルから接続確認。

$ iodbctest "DSN=TestDSN;UID=xxxx;PWD=xxxx"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0406.1211
Driver: 0.82 (libtdsodbc.so)

SQL>

エラーが出ないのでこれでおっけ。

Python からゴニョりたいので、pyodbc をダウンロード -> インストール。
やっと Python に触れる!

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pyodbc

def print_one(cur):
    cur.execute("select * from users")
    row = cur.fetchone()
    print row.user_id, row.user_name

def print_all(cur):
    cur.execute("select * from users")
    rows = cur.fetchall()
    for row in rows:
        print row.user_id, row.user_name

def print_count(cur):
    cur.execute("select count(*) from users")
    cnt = cur.fetchone()[0]
    print cnt

if __name__ == '__main__':
    con = pyodbc.connect('DSN=TestDSN;UID=xxxx;PWD=xxxx')
    cur = con.cursor()
    try:
        #print_one(cur)
        #print_all(cur)
        print_count(cur)
    finally:
        con.close()

こんな感じでいいのかな。

参考サイト)
unixODBC + FreeTDS + perlで、MS SQL Serverに接続する : fujishinko 雑記帳
Google Code Archive - Long-term storage for Google Code Project Hosting.