Не знаю, чем определить это “много”. База весит 23Мб
В любом случаи, когда собираю данные и даже если просто вывести через print, а не в эксель, то идёт заметная задержка секунды на 2-3
Как сказал один человек, слишком много открывания и закрывания БД, много запросов.
Вот ещё пример кода от туда
def band_side(self, unitpos, IDLine, IDPoly=1):
'''информация о кромке торца'''
b_priceID = 0 # id кромки в номенклатуре
b_name = '' # название кромки
b_width = 0 # ширина кромки
b_thickPan = 0 # толщина панели
b_thick = 0 # толщина кромки
b_cnt = 0
keys = ('ID', 'Name', 'Width', 'ThickPan', 'ThickBand', 'Count')
# определим тип панели
# PanPolyType: 1 - полилиния 2 - прямоугольная 3 - четырёхугольная
sql = "SELECT tpm.NumValue FROM TParams AS tpm WHERE (tpm.unitpos = {} AND tpm.ParamName='PanPolyType' AND tpm.HoldTable='TPanels')".format(unitpos)
PolyType = int(self.RS(sql))
if (PolyType == 2) or (PolyType == 3):
sql = "SELECT bu.BandUnitPos, tn.ID, tn.Name, Count FROM (SELECT idp.NumValue AS IDPoly, idl.NumValue AS IDLine, idb.NumValue AS BandUnitPos "\
"FROM (TParams idp LEFT OUTER JOIN TParams idl ON idp.UnitPos=idl.UnitPos AND idp.HoldTable=idl.HoldTable AND idp.Hold1=idl.Hold1 "\
"AND idp.Hold3=idl.Hold3) LEFT OUTER JOIN TParams idb ON idp.UnitPos=idb.UnitPos AND idp.HoldTable=idb.HoldTable AND idp.Hold1=idb.Hold1 "\
"AND idp.Hold3=idb.Hold3 WHERE idp.UnitPos={0} AND idp.HoldTable='TPaths' AND idp.Hold1=1 AND idp.ParamName='IDPoly' AND idl.ParamName='IDLine' "\
"AND idb.ParamName='BandUnitPos') bu, TNNomenclature tn, TElems te WHERE bu.BandUnitPos=te.UnitPos AND te.PriceID=tn.ID AND IDPoly={1} AND IDLine={2}".format(unitpos, IDPoly, IDLine)
res = self.db.recordset(sql)
if res:
bandID = (res[0][0])
b_priceID = (res[0][1])
b_name = (res[0][2])
b_cnt = (res[0][3])
sql = "SELECT Width FROM TBands WHERE UnitPos={}".format(bandID)
res = self.db.recordset(sql)
if res:
b_thickPan = (res[0][0])
sql = "SELECT tnpv.DValue FROM TNPropertyValues AS tnpv WHERE tnpv.PropertyID=21 AND tnpv.EntityID={}".format(b_priceID)
res = self.db.recordset(sql)
if res:
b_width = (res[0][0])
sql = "SELECT tnpv.DValue FROM TNPropertyValues AS tnpv WHERE tnpv.PropertyID=10 AND tnpv.EntityID={}".format(b_priceID)
res = self.db.recordset(sql)
if res:
b_thick = (res[0][0])
return dict(zip(keys,(b_priceID, b_name, b_width, b_thickPan, b_thick, b_cnt)))