Ich möchte in der Lage sein, eine Zeichenfolge wie unten zu nehmen und den ersten Parameter (id
) herausziehen und dann verwenden, um es auszudrucken. Ich habe in Split nach Python gesucht, aber normalerweise muss ich zwei oder drei Mal aufteilen, bevor ich etwas brauchbares bekomme. Hierparse SQL-Abfragen in Python
ist ein Beispiel für die Saiten, die ich zu analysieren, ich versuche:
EntryError(u"(sqlite3.IntegrityError) UNIQUE constraint failed:
role.name, role.domain_id [SQL: u'INSERT INTO table1 (id, name,
domain_id, extra) VALUES (?, ?, ?, ?)'] [parameters: ('id',
'fake1name', '<<null>>', '{}')]",)
Ich habe versucht, Dinge wie:
e = e.split("\'")
e = e.split(",")
Aber das gibt mir seltsam Strings, die weiter müssen analysiert werden. Gibt es einen einfacheren Weg, immer die id
von "[parameters: ('id', 'fake1name', '<<null>>', '{}')]"
zu ziehen?
Hier ist der Code, den ich habe:
except exception.EntryError as e:
query = str(e)
# example of me using split to try and reduce the string
parsedstr = query.split("[")
parsedstr = parsedstr.split("\'")
# This will give me id like I want but it doesn't seem efficient
# prints: id
print parsedstr[1]
Können Sie den Rest Ihres Codes anzeigen - haben Sie tatsächlich Zugriff auf den Cursor oder die Ausnahmeinstanz selbst? Vielen Dank. – alecxe
@alecxe hinzugefügt :) – ayonpyth
Welche Zeichenfolge versuchen Sie zu analysieren? Versuchen Sie tatsächlich, die Nachricht im oben genannten EntryError-Objekt zu analysieren? –