-
- PythonでMDBのデータをSQLiteに移動してみる
- 2010-04-16
Access2000のMDBファイルのloto6のデータをSQLiteに移動してみます。ただMDBのデータ取得だけでは何なので、loto6 のデータを使ってみました。
# encoding: cp932 import win32com.client import sqlite3 MDB_NAME = r"loto.mdb" SQLITE_NAME = r"loto.lit" # Accessのデータベースを開きます m_con = win32com.client.Dispatch("ADODB.Connection") m_con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;" % (MDB_NAME)) rs = win32com.client.Dispatch('ADODB.Recordset') rs.Open("SELECT [No],N1,N2,N3,N4,N5,N6,BN FROM loto6;", m_con) # SQLiteのデータベースを作成します。 s_con = sqlite3.connect(SQLITE_NAME) c = s_con.cursor() c.execute("""CREATE TABLE loto6 ( id INTEGER PRIMARY KEY, n1 INTEGER, n2 INTEGER, n3 INTEGER, n4 INTEGER, n5 INTEGER, n6 INTEGER, bn INTEGER )""") # データをSQLiteにコピーしていきます while not rs.EOF: c.execute('INSERT INTO loto6 VALUES (?,?,?,?,?,?,?,?)',( rs.Fields('No').Value, rs.Fields('N1').Value, rs.Fields('N2').Value, rs.Fields('N3').Value, rs.Fields('N4').Value, rs.Fields('N5').Value, rs.Fields('N6').Value, rs.Fields('BN').Value)) #print rs.Fields('No').Value rs.MoveNext() s_con.commit() rs.Close() m_con.Close() # SQLiteのデータを表示してみます for x in c.execute('SELECT * FROM loto6 WHERE id>400'): print xただ、どうもSQLiteにコピーするところで時間がかかっている感じがします。421件のデータでゆっくりしているようではいけませんぞ。 GetRowsで一気に配列としてデータを取得した方がいいのかな(GetRowsで得る配列は縦横が逆なのでちょっと面倒ですが)。
from:http://d.hatena.ne.jp/Fio/20081123/p1
-
Views(6288) | Comments(0) |
In:
Python相关
|
(04/16)
