Code refactoring
This commit is contained in:
104
dm.py
104
dm.py
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import json, os, configparser, shutil
|
||||
import json, os, configparser, shutil, re
|
||||
from datetime import datetime, date, time
|
||||
|
||||
def firstInit():
|
||||
# Инициализация переменныхб создание конфигруационного файла, копирование шаблонов
|
||||
@@ -83,6 +84,7 @@ def dbConnect():
|
||||
exit()
|
||||
#print(conn)
|
||||
c = conn.cursor()
|
||||
|
||||
return c
|
||||
|
||||
def createTables(tbl_list):
|
||||
@@ -118,8 +120,9 @@ def createTables(tbl_list):
|
||||
tbl_list[i]["fieldList"][x]["fType"] + auto_increment
|
||||
if tbl_list[i]["fieldList"][x]["index"] == "PRIMARY KEY":
|
||||
index = "PRIMARY KEY(" + tbl_list[i]["fieldList"][x]["fName"] + ")"
|
||||
field_names_list.append(tbl_list[i]["fieldList"][x]["fDescription"])
|
||||
struct_fields_list.append(tbl_list[i]["fieldList"][x]["fName"])
|
||||
field_names_list.append([tbl_list[i]["fieldList"][x]["fName"], tbl_list[i]["fieldList"][x]["fDescription"]])
|
||||
#struct_fields_list.append(tbl_list[i]["fieldList"][x]["fName"])
|
||||
struct_fields_list.append([tbl_list[i]["fieldList"][x]["fName"], fieldTypeConvert(tbl_list[i]["fieldList"][x]["fType"]), ])
|
||||
if tbl_list[i]["fieldList"][x]["relation"]:
|
||||
relation_list=[tbl_list[i]["fieldList"][x]["fName"]]
|
||||
relation_list.append(tbl_list[i]["fieldList"][x]["relation"])
|
||||
@@ -156,6 +159,7 @@ def selectData(tbl):
|
||||
for item in tbl_struct_list:
|
||||
if item[0] == tbl:
|
||||
for field in item[1]:
|
||||
field = field[0]
|
||||
qwery = qwery + field + ","
|
||||
for rel in item[2]:
|
||||
field = rel[0]
|
||||
@@ -182,16 +186,104 @@ def selectData(tbl):
|
||||
qwery = qwery.rstrip(',') + " FROM " + tbl + " LIMIT 10000"
|
||||
#print(qwery)
|
||||
c.execute(qwery)
|
||||
|
||||
return c.fetchall()
|
||||
|
||||
# получаем на вход имя таблицы и возвращаем список заголовков полей
|
||||
def getTableStructure(tbl):
|
||||
global tbl_descr_list
|
||||
global tbl_descr_list, tbl_struct_list
|
||||
#print(tbl_descr_list)
|
||||
#print(tbl_struct_list)
|
||||
for item in tbl_descr_list:
|
||||
if item[0] == tbl:
|
||||
return item[1]
|
||||
|
||||
# Получаем список названий полей и типов для заданной таблицы
|
||||
def getFields(tbl):
|
||||
global tbl_descr_list, tbl_struct_list
|
||||
#print(tbl_descr_list)
|
||||
#print(tbl_struct_list)
|
||||
for item in tbl_struct_list:
|
||||
if item[0] == tbl:
|
||||
#print(item[1])
|
||||
return item[1]
|
||||
# Ищем описание поля по его названию и возвращаем.
|
||||
def getFieldDescription(tbl, field):
|
||||
global tbl_descr_list, tbl_struct_list
|
||||
for item in tbl_descr_list:
|
||||
if item[0] == tbl:
|
||||
for i in item[1]:
|
||||
if i[0] == field:
|
||||
fName = i[1]
|
||||
return fName
|
||||
return "null"
|
||||
|
||||
def fieldTypeConvert(ftype):
|
||||
# разбираем строку на тип и длину
|
||||
ftype = str.lower(ftype)
|
||||
line = re.search("(.+?)\(([0-9]+)\)", ftype)
|
||||
if line:
|
||||
fType = line.groups()[0]
|
||||
fLength = line.groups()[1]
|
||||
if fType == 'int' or fType == 'integer':
|
||||
fType = 'integer'
|
||||
elif fType == 'char' or fType == 'varchar':
|
||||
fType = 'character'
|
||||
else:
|
||||
fType = ftype
|
||||
return fType
|
||||
|
||||
def getFieldType(tbl, field):
|
||||
global tbl_descr_list, tbl_struct_list
|
||||
#print(tbl_descr_list)
|
||||
#print(tbl_struct_list)
|
||||
for item in tbl_struct_list:
|
||||
if item[0] == tbl:
|
||||
for i in item[1]:
|
||||
if i[0] == field:
|
||||
fType = i[1]
|
||||
return fType
|
||||
#print(item[1])
|
||||
#return item[1]
|
||||
|
||||
# добавление записи в БД на вход принимает список вида:
|
||||
# [table [['field_1', 'значение'], ['field_2', 'значение'],....., ['field_n', 'значение']]]
|
||||
def insertDataIntoBD(dataList):
|
||||
global c
|
||||
dbConnect()
|
||||
tableName = dataList[0]
|
||||
|
||||
#datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
|
||||
|
||||
qwery = 'INSERT INTO ' + tableName + ' ('
|
||||
qweryData = ''
|
||||
qweryField = ''
|
||||
for item in dataList[1]:
|
||||
fType = getFieldType(tableName, item[0])
|
||||
#print(fType)
|
||||
qweryField = qweryField + item[0] + ','
|
||||
if fType == 'integer':
|
||||
qweryData = qweryData + '' + item[1] + ','
|
||||
elif fType == 'datetime':
|
||||
#преобразуем дату всяко разно
|
||||
dt = datetime.strptime(item[1], "%d.%m.%Y %H:%M")
|
||||
item[1] = str(dt)
|
||||
qweryData = qweryData + '\'' + item[1] + '\','
|
||||
elif fType == 'date':
|
||||
d = item[1].split('.')
|
||||
myDate = d[2] + '-' + d[1] + '-' + d[1]
|
||||
item[1] = str(myDate)
|
||||
qweryData = qweryData + '\'' + item[1] + '\','
|
||||
else:
|
||||
qweryData = qweryData + '\'' + item[1] + '\','
|
||||
|
||||
qwery = qwery + qweryField.rstrip(',') + ')' + ' VALUES (' + qweryData.rstrip(',') + ');'
|
||||
|
||||
print(qwery)
|
||||
c.execute(qwery)
|
||||
#c.close()
|
||||
return
|
||||
|
||||
|
||||
#initDBstructure()
|
||||
firstInit()
|
||||
dbConnect()
|
||||
dbConnect()
|
||||
|
Reference in New Issue
Block a user