PythonとODBC

お久しぶりです。こんにちは。
それでは、PythonからSQLServerに接続し、SELECT文で発行した
データを取得し、タブ区切りで出力するコードを紹介します。

まず、ODBCモジュールのインストールが必要になります。
下記ページから取得可能です。
http://code.google.com/p/pyodbc/downloads/list


では、実際のコード。
※接続文字列はWindows認証です。

                                                                                                                                    • -

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

def main():
## 接続文字列とSQL
servername = "***"
databasename = "***"
sql = u"select top 1000 * from ***"

## SQLServer接続
consql = pyodbc.connect("DRIVER={SQL Server};SERVER=" + servername + ";DATABASE=" + databasename + ";Trusted_Connection=yes;")
cursor = consql.cursor()
cursor.execute(sql)

## 新規出力モードでファイルオープン(カレントに作成)
f = open("test.txt", "w")

for row in cursor.fetchall():
writestring = ""
for x in row:
writestring = writestring + "\t" + str(x) + ""

f.writelines(writestring[1:])
f.write("\n")

f.close()
consql.close()

print u"完了した"


if __name__ == '__main__':
main()

                                                                                                                                    • -


これで動きました。
「***」となっている部分はご利用の環境に合わせて
変わるかと思います。ご利用のSQLSeverがExpressEditionの場合、
servernameはインスタンス名(デフォルトでは、
localhost\SQLEXPRESS」)でいいと思います。

PyScripterでテーブル名などで日本語を利用する場合、
ツールバーの「編集」⇒「ファイルフォーマット」で「UTF-8」を
選択し、文字列を利用する場合、「u""」として下さい。
そうしないと文字化けしました。

SQLを書き込む部分が私のような未熟者らしく、汚らしいコードに
なっているので、より効率のよい方法を模索せねば。