Colorful Life2010

PythonでAccessデータベース(*.mdb)にテーブルを追加する

テーブルの追加は、ADOXを使ってできますが、ADOからSQLを発行した方が楽なので、そちらで。テーブルの存在確認をしたかったので、これは ADOXで行っています。

#!c:/Python25/python.exe -u
# encoding: cp932

import win32com.client

MDB_NAME = r"test.mdb"
PASSWORD = "pass"
TABLE_NAME = u"テーブル"

#接続文字列を作成します。パスワードが必要ない場合は、後の方で。
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;\
    Jet OLEDB:Database Password=%s;" % (MDB_NAME,PASSWORD)
#ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;" % (MDB_NAME)

#ADOとADOXに接続します。
con = win32com.client.Dispatch("ADODB.Connection")
con.Open(ConnectionString)
cat = win32com.client.Dispatch("ADOX.Catalog")
cat.ActiveConnection = con

#テーブルの存在を確認します。
TableExists = False
for x in cat.Tables:
    if x.Name == TABLE_NAME:
        TableExists = True
        print "同じ名前のテーブルがありました"

#同じ名前のテーブルがなければ、、
if not TableExists:
    SQL = u"""CREATE TABLE %s
        (
        ID int Not Null CONSTRAINT PrimaryKey PRIMARY KEY, 
        氏名 varchar(50), 
        フリガナ varchar(50), 
        住所 varchar(50), 
        電話番号 varchar(20)
        );""" % (TABLE_NAME)
    con.Execute(SQL)

con.Close()

データベースを作成して、そのままテーブルの作成に入る場合は、接続の所を次のようにできます。テーブルの存在確認の省略は省略。。。

cat = win32com.client.Dispatch("ADOX.Catalog")
cat.Create(ConnectionString)
con = cat.ActiveConnection

PythonとMDBの組み合わせって、結構便利なのではないだろうかと思ったりしてます。Access持っていれば、データの確認や帳票印 刷とか簡単にできますし。データベースサイズがほどほどで、同時アクセスもあんまりなさそうであれば、十分いけそう。

from:http://d.hatena.ne.jp/Fio/20081120/p1

历史上的今天: [2007/04/16]今天看的进度慢了些
[2007/04/16]无耻的网通,恶心的“健康商城”

[PythonでAccessデータベース(*.mdb)にテーブルを追加する]的回复

Post a Comment~