Hi,
tolle Lösung. Viele Wege führen nach Rom:) Ich werd mal versuchen hinter zu steigen. Kann jemand noch zu meinem zuvorigen Posting schauen? Ich versuche immer noch die erstellte Tabelle zu füllen und häng an der Kleinigkeit. Siehe 2 Postings drüber.
MFG
Basti
xml einlesen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Könntest du uns vielleicht einfache Daten posten und was dann rauskommen soll? So kann man das etwas einfacher nachvollziehen, denke ich.TripleH hat geschrieben:Ich werd mal versuchen hinter zu steigen. Kann jemand noch zu meinem zuvorigen Posting schauen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi,
Daten selbst habe ich auch nicht. Aber es Geht ja immer noch um die XML. und wenn man jetzt z.B. mit deinem Skript die Struktur der Tabelle in der Datenbank hat wäre es ja wichtig sie auch zu füllen.
hier ist das Posting welches ich zuvor geschrieben...
Dank dir. Progchild. Denk habs verstanden. Ich hab mal nen bicßehn rumgespielt und die mit der Create Anweisung die Tabelle in der Datenbank erstellt.
Jetzt hab ich nur mal ne Frage. Die xml Struktur in eine Datenbank zu schreiben ist nicht so schwer. Nur ich hab ma oben bei Lara gelesen. Ziel einer jeden Tabelle in einer Datenbank ist es ja sie zu füllen. Ich hab jetzt mal zu der Test.xml mal eine sequentielle Datei erstellt.
ganz einfach. sind ja nur 2 Felder
Nummer und Name.
das würde dann wohl so aussehen.
ersten 97 zeichen überlesen 1234siegfreidfre
ersten 97 zeichen überlesen 3456herrmanfre
so könnte ja die test.txt aussehen die durch die test.xml beschrieben wurde. Nur mir ist eine schon theoretisch bei der Umsetztung etwas nicht klar. Ich hoffe jemande kann mir helfen:
Und zwar muss ich mir den ersten Feldblock in der xml suchen und dort finde ich ja die Position wo er in der test.txt anfängt und wie lang er ist.
Nun muss ich mit dieser info in der txt an die Stelle springen und den Feldinhalt wieder speichern für das insert query.
Irgendie hab ich ne Blockade im Kopf wegen den 2 Dateien die jetzt gleichzeitig zu handeln sind.
Kann mir jemand nen Denkanstoss geben?
Daraufhin hat mir Joghurt geantwortet und danach kam mein Posting auf welches ich veriwesen habe..
Ich hoff du blickst durch.
MFG
Basti
Daten selbst habe ich auch nicht. Aber es Geht ja immer noch um die XML. und wenn man jetzt z.B. mit deinem Skript die Struktur der Tabelle in der Datenbank hat wäre es ja wichtig sie auch zu füllen.
hier ist das Posting welches ich zuvor geschrieben...
Dank dir. Progchild. Denk habs verstanden. Ich hab mal nen bicßehn rumgespielt und die mit der Create Anweisung die Tabelle in der Datenbank erstellt.
Jetzt hab ich nur mal ne Frage. Die xml Struktur in eine Datenbank zu schreiben ist nicht so schwer. Nur ich hab ma oben bei Lara gelesen. Ziel einer jeden Tabelle in einer Datenbank ist es ja sie zu füllen. Ich hab jetzt mal zu der Test.xml mal eine sequentielle Datei erstellt.
ganz einfach. sind ja nur 2 Felder
Nummer und Name.
das würde dann wohl so aussehen.
ersten 97 zeichen überlesen 1234siegfreidfre
ersten 97 zeichen überlesen 3456herrmanfre
so könnte ja die test.txt aussehen die durch die test.xml beschrieben wurde. Nur mir ist eine schon theoretisch bei der Umsetztung etwas nicht klar. Ich hoffe jemande kann mir helfen:
Und zwar muss ich mir den ersten Feldblock in der xml suchen und dort finde ich ja die Position wo er in der test.txt anfängt und wie lang er ist.
Nun muss ich mit dieser info in der txt an die Stelle springen und den Feldinhalt wieder speichern für das insert query.
Irgendie hab ich ne Blockade im Kopf wegen den 2 Dateien die jetzt gleichzeitig zu handeln sind.
Kann mir jemand nen Denkanstoss geben?
Daraufhin hat mir Joghurt geantwortet und danach kam mein Posting auf welches ich veriwesen habe..
Ich hoff du blickst durch.
MFG
Basti
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es ist schwer zu sagen, wo die Daten in der test.txt sind, es steht nur ein From-Wert drin, dieser bezeichnet was? Die Zeilennummer? Die Stelle an der die Daten ausgelesen werden? Ich könnte mir folgenden Aufbau dieser text.dat (nicht plain-text) vorstellen:
Der Aufbau der XML Datei definiert folgendes (ich habe meine RE und SAX-Parser erweitert, so dass sie auch den From-Wert lesen können):
Dann geht ein Script dieses Dictionary durch, geht erstmal an Position 97, liest 4 Zeichen (Das wären dann im meinem Beispiel die 'b's), dann geht das Script weiter, stellt sich an Position 101, und liest von dort 12 Zeichen (die 'c's in meinem Beispiel). Ist es das was du meinst? Das scheint mir ziemlich einfach zu sein, da ja immer angegeben wird, von welcher Stelle wieviel gelesen werden soll.
Code: Alles auswählen
datei = 97 * 'a' + 4 * 'b' + 12 * 'c'
Code: Alles auswählen
{'NUMMER': {'from': '97', 'length': '4', 'type': 'INTEGER'}, 'Name': {'from': '101', 'length': '12', 'type': 'VARCHAR'}}
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi,
also hab dieses Verfahren schon öfters gesehen. Und zwar ist das schon richtig. Man muss mit einer for Schleife Zeile für Zeile in der TXT durchgehen. Die Angaben der xml beziehen sich aber nur auf eine komplette Zeile. Somit wäre der From 99 die Postion in der Zeile wo das Feld beginnt.
Wie gesagt so würde das z.B. aussehen:
ersten 97 zeichen überlesen 1234siegfreidfre
ersten 97 zeichen überlesen 3456herrmanfre
die ersten 97 Zeichen werdn überlesen und 1234 ist dann due Nummer und danach kommt der Name dann.
Deswegen will ich ja vermeiden bei Nummer = line[97:101]
Name = line [101:109]
das irgendwie die Endposition die Anfangspositon des 2. Fedes ist. sondern irgendwie noch die length Angabe aus der xml verwenden.
Oh mensch viel geschrieben. Ich hoff es ist dir jetzt klar wie ichs meine.
Schau ruhig nochmal auf das andere Posting vielleicht drücke ich mich auch falsch aus:)
MFG
Basti
also hab dieses Verfahren schon öfters gesehen. Und zwar ist das schon richtig. Man muss mit einer for Schleife Zeile für Zeile in der TXT durchgehen. Die Angaben der xml beziehen sich aber nur auf eine komplette Zeile. Somit wäre der From 99 die Postion in der Zeile wo das Feld beginnt.
Wie gesagt so würde das z.B. aussehen:
ersten 97 zeichen überlesen 1234siegfreidfre
ersten 97 zeichen überlesen 3456herrmanfre
die ersten 97 Zeichen werdn überlesen und 1234 ist dann due Nummer und danach kommt der Name dann.
Deswegen will ich ja vermeiden bei Nummer = line[97:101]
Name = line [101:109]
das irgendwie die Endposition die Anfangspositon des 2. Fedes ist. sondern irgendwie noch die length Angabe aus der xml verwenden.
Oh mensch viel geschrieben. Ich hoff es ist dir jetzt klar wie ichs meine.
Schau ruhig nochmal auf das andere Posting vielleicht drücke ich mich auch falsch aus:)
MFG
Basti
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Okay, dann versuch ich mal so ein Programm zu schreiben (ohne etwas aus der XML-Datei einzulesen):
tebl.txt (bitte nicht über den Inhalt der Datei meckern, mir ist im Moment nichts sinnvolleres eingefallen)
Nun das Programm:
Spec ist die Spezifikation, welche Daten aus der Datei gelesen werden.
tebl.txt (bitte nicht über den Inhalt der Datei meckern, mir ist im Moment nichts sinnvolleres eingefallen)
Code: Alles auswählen
ersten 97 zeichen ueberlesen 1234 blablub blubbla tralala naan zeta erle tuut flufluf tataa arghDATAende
149 2001 hal 9000 ugs
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
spec = [['NUMMER', {'from': 97, 'length': 4, 'type': 'INTEGER'}],
['Name', {'from': 10, 'length': 8, 'type': 'VARCHAR'}]]
print 'Opening file'
f = file('tabl.txt', 'r')
print 'Iterating through lines'
for line, specline in zip(f, spec):
line = line.splitlines()[0]
print 'Line: %s' % line
print 'Spec:',
print specline
from_point = specline[1]['from'] - 1
to_point = from_point + specline[1]['length']
data = line[from_point:to_point]
print 'Data: %s' % data
print 'Closing file. EOP'
f.close()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo,
sorry das ich mich nicht solnage gemeldet habe. Gut ich versuch ja immer noch die Daten
aus der Textdatei in die von der xml Struktur gegebene Tabelle zu importieren.
Gut also ich mit diesem Skript wird jetzt eine Liste erstellt welche ein dictionary beinhaltet
welches dann mit der for Schleife dann durchlaufen wird.
So sieht die Ausgabe aus:
[['NUMMER', {'from': 99,'length': 5}], ['UNIUE', {'from': 104,'length': 8}], ['SKZSICH','length': 3}], ['DATABR', {'from': 115,'length': 8}]]
Iterating through lines
Line: 12345darfichsbkb20001224
Traceback (most recent call last):
File "C:\Programme\Python2.4\gdpdu1.py", line 74, in -toplevel-
from_point = specline[1]['from']
IndexError: string index out of range
Allerdings kommt er irgendwie nicht hiermit zurecht:spec = r.get_query().encode('latin-1').
Zumindest scheint er das wohl als gesamten string zu sehen oder?
Die For Schleife kann nicht durchlaufen werden. Hat jemand ne Idee woran es liegt?
Das 2. Prob ist wenn die Forschleife durchlaufen wird ist es ja so das dann die Daten
der Felder gespiechert werden müssen. zur Zeit werden ja nur auf der data variablen
gespeichert aber sie müssen ja in in diese Anweisung mit eingebaut werden:
INSERT INTO Stat VALUES('Feldinhalt',Feldinhalt',...)
Hat da jemand ne Idee? Ich Danke für eure Mühe:)
MFG
Basti
sorry das ich mich nicht solnage gemeldet habe. Gut ich versuch ja immer noch die Daten
aus der Textdatei in die von der xml Struktur gegebene Tabelle zu importieren.
Gut also ich mit diesem Skript wird jetzt eine Liste erstellt welche ein dictionary beinhaltet
welches dann mit der for Schleife dann durchlaufen wird.
Code: Alles auswählen
import xml.parsers.expat
import MySQLdb
class Reader:
def read( self, filename ):
self.query = '['
self.path = []
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = self.start_element
p.EndElementHandler = self.end_element
p.CharacterDataHandler = self.char_data
f = open("C:\\test.xml", 'r' )
p.ParseFile( f )
f.close()
def add_seperator( self ):
if not self.first_col:
self.query += ", "
else:
self.first_col = False
def start_element( self, name, attrs):
path = "/" . join( self.path )
if path == 'Media':
if name == 'Table':
self.first_col = True
self.path.append( name )
self.cur_data = ''
def end_element( self, name):
path = "/" . join( self.path )
if path == 'Media/Table/FixedLength/FixedColumn/Name':
self.add_seperator()
self.query += "['" + self.cur_data + "',"
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/Length':
self.query += "'length': " + self.cur_data + "}]"
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
self.query += " {'from': " + self.cur_data + ","
if path == 'Media/Table':
self.query += "]"
del self.path[-1]
def char_data( self, data):
self.cur_data += data
def get_query( self ):
return self.query
r = Reader()
r.read('test.xml' )
spec = r.get_query().encode('latin-1')
print spec
f = file("C:\\test.txt", 'r')
for line in f:
line = line.splitlines()[0]
print 'Line: %s' % line
for specline in spec:
from_point = specline[1]['from']
to_point = from_point + specline[1]['length']
data = line[from_point:to_point]
name = specline[0]
print 'name: %s' % name
print 'Data: %s' % data
print 'Closing file. EOP'
f.close()
So sieht die Ausgabe aus:
[['NUMMER', {'from': 99,'length': 5}], ['UNIUE', {'from': 104,'length': 8}], ['SKZSICH','length': 3}], ['DATABR', {'from': 115,'length': 8}]]
Iterating through lines
Line: 12345darfichsbkb20001224
Traceback (most recent call last):
File "C:\Programme\Python2.4\gdpdu1.py", line 74, in -toplevel-
from_point = specline[1]['from']
IndexError: string index out of range
Allerdings kommt er irgendwie nicht hiermit zurecht:spec = r.get_query().encode('latin-1').
Zumindest scheint er das wohl als gesamten string zu sehen oder?
Die For Schleife kann nicht durchlaufen werden. Hat jemand ne Idee woran es liegt?
Das 2. Prob ist wenn die Forschleife durchlaufen wird ist es ja so das dann die Daten
der Felder gespiechert werden müssen. zur Zeit werden ja nur auf der data variablen
gespeichert aber sie müssen ja in in diese Anweisung mit eingebaut werden:
INSERT INTO Stat VALUES('Feldinhalt',Feldinhalt',...)
Hat da jemand ne Idee? Ich Danke für eure Mühe:)
MFG
Basti
Dein Problem ist, dass specline ein String ist. Du kannst den nicht wie ein Dict behandeln. Ich würde dir vorschlagen, dass du die Informationen restmal als Dict abspeicherst...TripleH hat geschrieben:Code: Alles auswählen
[...] r = Reader() r.read('test.xml' ) spec = r.get_query().encode('latin-1') line = line.splitlines()[0] print 'Line: %s' % line for specline in spec: from_point = specline[1]['from']

hallo,
ja das hab ich mir gedacht das es nen String ist. Ist es denn möglich den String in ein Dictionary umzuwandeln? Weil den Ansatz wie ich das angefangen habe würd ich gern weiterverfolgen, weil die Zeilen die ausgegeben werden sind ja richtig nur das es nen String ist.
mfg
sarah
ja das hab ich mir gedacht das es nen String ist. Ist es denn möglich den String in ein Dictionary umzuwandeln? Weil den Ansatz wie ich das angefangen habe würd ich gern weiterverfolgen, weil die Zeilen die ausgegeben werden sind ja richtig nur das es nen String ist.
mfg
sarah
Überall wo steht, musst du die Daten halt in ein Dict packen statt sie dem String query hinzuzufügen.
Code: Alles auswählen
self.query += ...
Hallo,
achso, muss mans doch nur so machen in dem mans gleich ins dict schreibt.
Gut ich fand diese Struktur:
schon zeimlich sinnvoll.
versuch gerade Umzusetzten doch es gibt noch ein kleines Prob:
Der Quelltext ist ja noch immer derselbe ausser das in der Funktion end_element
die werte Ins Dict bzw. Liste eingetragen werden.
Ich habs mir so gedacht:(ich weiß self.query könnte weg)
so damit würde ich immer diese Grundstruktur der Liste hinzufügen. Das Problem ist das jetzt
der from und lenth wert null sind. Mein plan war es self.cur_data immer auf ner Variablen
zu speichern und dann alles hier:if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
zusammensetzen aber allerdings kommt dann immer die Fehlermeldung:
local variable ''referenced before assgment.
Gut das geht dann schon mal nicht. Allerdings da das Dictionary ein Element der Liste ist fällt es mir schwer
auf den key from zuzugreifen und so den Wert dann in den jeweiligen if Anweisungen zu setzten.
Kann jemand so nett sein und mir noch nen guten Tipp geben?
MFG
Basti
achso, muss mans doch nur so machen in dem mans gleich ins dict schreibt.
Gut ich fand diese Struktur:
Code: Alles auswählen
spec = [['NUMMER', {'from': 97, 'length': 4}],
['Name', {'from': 10, 'length': 8}]]
versuch gerade Umzusetzten doch es gibt noch ein kleines Prob:
Der Quelltext ist ja noch immer derselbe ausser das in der Funktion end_element
die werte Ins Dict bzw. Liste eingetragen werden.
Ich habs mir so gedacht:(ich weiß self.query könnte weg)
Code: Alles auswählen
def end_element( self, name):
path = "/" . join( self.path )
if path == 'Media/Table/FixedLength/FixedColumn/Name':
self.add_seperator()
self.query += "['" + self.cur_data + "',"
list.append([[self.cur_data.encode('latin-1'), {'from': 0, 'length': 0}])
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/Length':
self.query += "'length': " + self.cur_data + "}]"
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
self.query += " {'from': " + self.cur_data + ","
if path == 'Media/Table':
self.query += "]"
del self.path[-1]
so damit würde ich immer diese Grundstruktur der Liste hinzufügen. Das Problem ist das jetzt
der from und lenth wert null sind. Mein plan war es self.cur_data immer auf ner Variablen
zu speichern und dann alles hier:if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
zusammensetzen aber allerdings kommt dann immer die Fehlermeldung:
local variable ''referenced before assgment.
Gut das geht dann schon mal nicht. Allerdings da das Dictionary ein Element der Liste ist fällt es mir schwer
auf den key from zuzugreifen und so den Wert dann in den jeweiligen if Anweisungen zu setzten.
Kann jemand so nett sein und mir noch nen guten Tipp geben?
MFG
Basti
Hallo,
Ok ich habs jetzt alles in eine Liste bzw. Dict gepackt:
Die for listline in list: läuft gut weil er jetzt jedes einzelne
Listenelement erkennt. Allerdings kommt bei dieser Fehlermeldung:
data = line[from_point:to_point]
Und zwar weil die Werte von from oder lenght nicht integer sind.
Gut gibt man die Liste mit aus erhält man dies:
die Werte von length und from stehen im Hocjkomma was ja fürn nen String
spricht.
Doch warum sind sie Strings?
MFG
Basti
Ok ich habs jetzt alles in eine Liste bzw. Dict gepackt:
Code: Alles auswählen
def end_element( self, name):
path = "/" . join( self.path )
if path == 'Media/Table/FixedLength/FixedColumn/Name':
self.add_seperator()
self.n = self.cur_data.encode('latin-1')
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
self.f = self.cur_data.encode('latin-1')
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/Length':
list.append([self.n, {'from': self.f, 'length': self.cur_data.encode('latin-1')}])
if path == 'Media/Table':
self.query += "]"
print self.cur_data
del self.path[-1]
def char_data( self, data):
self.cur_data += data
def get_query( self ):
return self.query
r = Reader()
r.read('test.xml' )
spec = r.get_query().encode('latin-1')
print spec
print list
f = file("C:\\test.txt", 'r')
for line in f:
line = line.splitlines()[0]
print 'Line: %s' % line
for listline in list:
print listline
from_point = listline[1]['from']
to_point = from_point + listline[1]['length']
data = line[from_point:to_point]
name = listline[0]
print 'name: %s' % name
print 'Data: %s' % data
print 'Closing file. EOP'
f.close()
Listenelement erkennt. Allerdings kommt bei dieser Fehlermeldung:
data = line[from_point:to_point]
Und zwar weil die Werte von from oder lenght nicht integer sind.
Gut gibt man die Liste mit aus erhält man dies:
Code: Alles auswählen
[['NUMMER', {'length': '5', 'from': '99'}], ['NAME', {'length': '8', 'from': '104'}], ['SKZSICH', {'length': '3', 'from': '112'}], ['DATABR', {'length': '8', 'from': '115'}]]
spricht.
Doch warum sind sie Strings?
MFG
Basti
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Da werden die Zahlen wohl schon beim XML import als String importiert... Sind die in den XML Datei auch als Zahlen "ausgewiesen"???
Als workaround, könntest du sowas machen wie:
Als workaround, könntest du sowas machen wie:
Code: Alles auswählen
try:
item = int( item )
except:
pass
Hi,
Die Zahl steht in nem Tag. Denk mal wird wohl schon da nen String sein.
Dein Ansatzt fängt das aber nur ab oder? Doch wie bekomme ich hin das die Zahlen integer werden? Probier auch schon hin und her aber irgendwie läufts nicht.
MFG
Basti
Die Zahl steht in nem Tag. Denk mal wird wohl schon da nen String sein.
Dein Ansatzt fängt das aber nur ab oder? Doch wie bekomme ich hin das die Zahlen integer werden? Probier auch schon hin und her aber irgendwie läufts nicht.
MFG
Basti
Hallo,
So ich habs jetzt so:
Das einzige Prob ist jetzt das der Query vernünftig wird.
Und zwar wird ja bei dem Create Vorgang deines andern Skriptes Progchild
automatisch der Name der TAbelle aus der xml Datei ermittelt und
dann über ne Variable in den Query eingefügt. In welcher Variablen
ist der gespeichert? Wie man sieht heißt jetz der Name der Tabelle der
und wurde manuell eingefügt von mir...(und dat ist Mist:)) Und gut das mit dem Komma nach dem
letzten Element habe ich auch noch. Das sind die 2 Sachen die ich nicht 100%
an deinem andern Skript verstanden habe (wo anhand der xml die Tabelle erstellt
wir)kannst du mir das nochmal erklären damit ichs hier auch so machen kann
und den Namen der Tabelle automatisch in den Query eingefügt wird.
Ich hoffe du verstehst mich.Glaub ich hab ganz schön undeutlich geschrieben:)
MFG
Basti
So ich habs jetzt so:
Code: Alles auswählen
import xml.parsers.expat
import MySQLdb
list=[]
l =[]
class Reader:
def read( self, filename ):
self.query = '['
self.path = []
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = self.start_element
p.EndElementHandler = self.end_element
p.CharacterDataHandler = self.char_data
f = open("C:\\test.xml", 'r' )
p.ParseFile( f )
f.close()
def add_seperator( self ):
if not self.first_col:
self.query += ",\n "
else:
self.first_col = False
def start_element( self, name, attrs):
path = "/" . join( self.path )
if path == 'Media':
if name == 'Table':
self.first_col = True
self.path.append( name )
self.cur_data = ''
def end_element( self, name):
path = "/" . join( self.path )
if path == 'Media/Table/FixedLength/FixedColumn/Name':
self.add_seperator()
self.query += "['" + self.cur_data + "',"
self.n = self.cur_data.encode('latin-1')
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/From':
self.query += " {'from': " + self.cur_data + ","
self.f = self.cur_data.encode('latin-1')
if path == 'Media/Table/FixedLength/FixedColumn/FixedRange/Length':
self.query += "'length': " + self.cur_data + "}]"
print self.cur_data
print'hier'
print self.f
list.append([self.n, {'from':int(self.f), 'length': int(self.cur_data.encode('latin-1'))}])
if path == 'Media/Table':
self.query += "]"
del self.path[-1]
def char_data( self, data):
self.cur_data += data
def get_query( self ):
return self.query
r = Reader()
r.read('test.xml' )
spec = r.get_query().encode('latin-1')
print spec
print list
print l
f = file("C:\\test.txt", 'r')
for line in f:
data = ''
line = line.splitlines()[0]
print 'Line: %s' % line
for listline in list:
print listline
from_point = listline[1]['from']
to_point = from_point + listline[1]['length']
data = data +"'"+line[from_point:to_point]+"',"
name = listline[0]
query = 'INSERT INTO der VALUES ('+ data+')'
print query
print 'Closing file. EOP'
f.close()
Und zwar wird ja bei dem Create Vorgang deines andern Skriptes Progchild
automatisch der Name der TAbelle aus der xml Datei ermittelt und
dann über ne Variable in den Query eingefügt. In welcher Variablen
ist der gespeichert? Wie man sieht heißt jetz der Name der Tabelle der
und wurde manuell eingefügt von mir...(und dat ist Mist:)) Und gut das mit dem Komma nach dem
letzten Element habe ich auch noch. Das sind die 2 Sachen die ich nicht 100%
an deinem andern Skript verstanden habe (wo anhand der xml die Tabelle erstellt
wir)kannst du mir das nochmal erklären damit ichs hier auch so machen kann
und den Namen der Tabelle automatisch in den Query eingefügt wird.
Ich hoffe du verstehst mich.Glaub ich hab ganz schön undeutlich geschrieben:)
MFG
Basti
Der Name wird in keine Variable gespeichert, sondern nur in self.cur_data zwischengelagert.
In dem Teil meines Scriptes wirde der Name dem Query hinzugefügt.
Du musst die also an der Stelle self.cur_data in eine Variable speichern...
In dem Teil meines Scriptes wirde der Name dem Query hinzugefügt.
Code: Alles auswählen
def end_element( self, name):
path = "/" . join( self.path )
if path == 'Media/Table/Name':
self.query += self.cur_data + "\n(\n"