danke erstma für die rege teilnahme
hier mein code design:
Code: Alles auswählen
class db_Artikelstammdaten(object):
table_name_a = 'A_Hauptsatz_1'
def __init__(self, path_db_file):
self.path_db_file = path_db_file
self.conn = sqlite3.connect(self.path_db_file)
self.conn.text_factory = str
self.cursor = self.conn.cursor()
def __enter__(self):
return self.conn
def __exit__(self, exc_type, exc_val, exc_tb):
if self.conn:
self.conn.close()
def create_product(self):
self.cursor.execute("CREATE TABLE IF NOT EXISTS " + self.table_name_a + "("
"[...]")
# Hier kommt dann der ganze data-Bums an:
def update_product_a(self, data):
with self.conn:
for update in data:
artikelnummer = update[0]
preiskennung = update[1]
preis = update[2]
rabattkennung = update[3]
rabatt = update[4]
# [...]
einkaufspreis = ...
self.cursor.execute("UPDATE " + self.table_name_a + " SET Preis = :preis WHERE "
"Artikelnummer = :artikelnummer",
{'preis': einkaufspreis, 'artikelnummer': artikelnummer})
self.conn.commit()
data wird durch das chunk-weise auslesen der update-datei geholt, zurechtgebastelt und dann immer zeilenweise übergeben.
eine zeile, die dann in
def update_product_a(self, data):
ankommt, sieht so aus:
Code: Alles auswählen
data = [[u'TN10139508840', u'1', u'24600', u'1', u'4800', u'', u'', u'', u''],
[u'TN10139507636', u'1', u'29400', u'1', u'4800', u'', u'', u'', u''],
[u'TN10139637656', u'1', u'29400', u'1', u'4800', u'', u'', u'', u'']]
dann die nächste, die nächste, die nächste,....
die update-textdatei_2 ist 34311801 Bytes.
die andere für das bloße INSERTen ist in 20min durch und liegt sogar bei 325315663 Bytes (zehn mal größer und
gefühlt 1000 mal schneller verarbeitet !)
chunkgröße hab ich schon variiert, bringt natürlich nichts.
insgesamt ist das sehr langsam...