/
sqlite3_from_mdb.py
75 lines (63 loc) · 2.48 KB
/
sqlite3_from_mdb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
__author__ = 'Мирослава'
'''
УВАГА!
Ця програмка заповнює базу db.sqlite3 даними з акцесівської
бази mdb
З файла models.py беруться:
mdbTable - назва таблиці в базі access
mdbFields - словник відповідності між назвами полів у базах mdb i sqlite3
Програмку запускати лише один раз!!!
у момент, коли файл db.sqlite3 вже створено
Про всяк випадок рядки виклику вкінці цього файла закоментовані!!!
'''
import pypyodbc
from mdbaccess import *
from django_apps_setup import django_apps_setup
# Встановлення змінної оточення та ініціалізація Django
django_apps_setup("koopsite.settings")
# Тепер можна імпортувати моделі з застосунку Django
from flats.models import Flat, Person
def sqlite3_from_mdb(mdbfilepath, tableName, model):
# копіює всі дані з таблиці mdb в таблицю sqlite3
pypyodbc.lowercase = False
connection = pypyodbc.win_connect_mdb(mdbfilepath)
cursor = connection.cursor()
fields = "*"
condition = ""
sqlcommand = "SELECT %s FROM %s %s" % (fields, tableName, condition)
cursor.execute(sqlcommand)
print('-'*50)
attr = False
while True:
row = cursor.fetchone()
if not row: break
print('row=', row)
m = model()
if not attr:
attr = True
coldict, collist = rowAttributes(row)
# print(coldict)
# print(collist)
for field in m.mdbFields:
# print(field, m.mdbFields[field])
if row[coldict[m.mdbFields[field]]]:
setattr(m, field, row[coldict[m.mdbFields[field]]])
for field in m.mdbFields:
print('%20s | %s' % (field, getattr(m, field)))
m.save()
print('m.id=', m.id)
print('-'*50)
# input()
print('-'*50)
cursor.close()
connection.commit()
connection.close()
mdbfiledir = 'c:/PyPrograms/PyRoman/mdbaccess/'
mdbfilename = 'Список Кооперативу Example.mdb'
mdbfilepath = mdbfiledir + mdbfilename
print(mdbfilepath)
# tableName='[Таблиця Квартири]'
# sqlite3_from_mdb(mdbfilepath, tableName, model=Flat)
#
# tableName='[Таблиця Особи]'
# sqlite3_from_mdb(mdbfilepath, tableName, model=Person)