Benötige Hilfe beim durchführen dieses Skriptes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ayhan
User
Beiträge: 19
Registriert: Mittwoch 26. November 2014, 13:51

Hallo Freunde, hab eine Couchdb angelegt, zum bedauern habe ich es zu spät rausgefunden wie umständlich der export dieser datenbank in einer csv file ist.

Hierfür habe ich ein fertiges skript gefunden, problem ist das ich recht schwach in python bin. Deswegen wollte ich fragen ob mir jemand einen Ratschlag bitte geben kann. Ständig kommen da Fehlermeldung wie invalid syntax.

Hab die Skripte hier gefunden: https://github.com/tigeorgia/Declaration.ge-PDF-Scraper

Und auf der Seite gibt es nen kurzen Bericht über CSV.

You can directly export to CSV using file_output.py (see above), and a few tools are provided to export the contents of a CouchDB database to CSV.

Edit variables HOST and DB in couchctl to connect to your couchdb. Then install the design document for CSV export into the database (once!):

$ ./scripts/couchctl upview csv/forexport.json

Edit dictionary DB in csv/csv.py to connect to your couchdb. Then you can repeatedly run a python script to collect the CSV data and dump it into a directory:

$ ./csv/csv.py csvdata/

Eigentlich ist es ja genau das was ich will, aber die beiden Dateein die ich gerne ausführen will csv.py und file_output.py lassen sich nicht ausführen, obwohl ich den namen meiner Datenbank eingefügt habe.

Ich danke euch schon mal fürs lesen und bitte um Rat.

Gruß Ayooooo
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

ayhan hat geschrieben:Ständig kommen da Fehlermeldung wie invalid syntax.
Stell dir folgende Mitteilung vor: "Mein Gerät ist kaputt. Ständig läuft es nicht.". Kannst du da eine Diagnose abgeben? Du weißt weder um welches Gerät es sich handelt und selbst wenn du es wüsstest hättest du keine Chance den Fehler zu bestimmen.

In deinem Fall kann ich jetzt analog dazu nur absolut im Nebel stochern. Vielleicht verwendest du Python 2 Code mit Python 3.

Gib uns mal mehr Details wie zum Beispiel die genaue Fehlermeldung.
BlackJack

@ayhan: Nur weil das aus dem ersten Beitrag nicht ganz deutlich wird: Du willst schon eine Datenbank nach CSV exportieren die mit diesem PDF-Scraper aus dem verlinkten Github-Projekt erstellt/gefüllt wurde‽ Das dort ist nämlich kein *allgemeiner* export für eine beliebige Couch-DB.

Wäre auch schwierig etwas zu schreiben was eine beliebige CouchDB-Datenbank *sinnvoll* in eine CSV-Datei überführen könnte, weil eine dokumentenorientierte Datenbank normalweise hierarchische Dokumente enthält und keine zweidimensionalen Tabellen. Und diese Dokumente müssen dann auch noch nicht einmal alle die gleiche ”Form” besitzen.
ayhan
User
Beiträge: 19
Registriert: Mittwoch 26. November 2014, 13:51

Also der Fehler bezieht sich auf diesen Teil des Codes file_output.py, hier meldet er invalid sytax in der zweiten zeile, wegen except getopt.error, msg:

Code: Alles auswählen

  try:
        opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
    except getopt.error, msg:
        print msg
        print "for help use --help"
        sys.exit(2)
# process options
    for o, a in opts:
        if o in ("-h", "--help"):
            print __doc__
            sys.exit(0)

    return args
ayhan
User
Beiträge: 19
Registriert: Mittwoch 26. November 2014, 13:51

BlackJack hat geschrieben:@ayhan: Nur weil das aus dem ersten Beitrag nicht ganz deutlich wird: Du willst schon eine Datenbank nach CSV exportieren die mit diesem PDF-Scraper aus dem verlinkten Github-Projekt erstellt/gefüllt wurde‽ Das dort ist nämlich kein *allgemeiner* export für eine beliebige Couch-DB.

Wäre auch schwierig etwas zu schreiben was eine beliebige CouchDB-Datenbank *sinnvoll* in eine CSV-Datei überführen könnte, weil eine dokumentenorientierte Datenbank normalweise hierarchische Dokumente enthält und keine zweidimensionalen Tabellen. Und diese Dokumente müssen dann auch noch nicht einmal alle die gleiche ”Form” besitzen.
Mir ist schon klar, das ich zum teil meinen Code an meine Couchdb anpassen muss, kenne das noch von Java mit jdbc, bei der Parameter Übergabe(beispiel wenn man einen Eintrag in DB machte oder diese Updatete) aber bis zum jetzigen Zeitpunkt, wird ja der Code nicht mal akzeptiert.
BlackJack

@ayhan: Das ist Python 2 Quelltext. Du versuchst den wahrscheinlich mit Python 3 auszuführen wo diese ``except``-Zeile syntaktisch falsch ist.

Edit: Man muss da wahrscheinlich so viel anpassen, dass man es eigentlich auch selber schreiben könnte. Zumal das Python-Skript ziemlich schlecht ist. `getopt` ist uralt, da gibt es schon sein Ewigkeiten bessere Alternativen in der Standardbibliothek (`argparse`), statt die CSV-Datei mit Hilfe des `csv`-Moduls aus der Standardbibliothek zu erstellen wird der Inhalt der Exportdatei selbst zusammengebastelt, natürlich ohne so Randfälle wie Zeilenumbruch oder Trennzeichen kommen in einem Feld vor zu berücksichtigen. Ausserdem wird die Ausgabe auf die denkbar ungünstigste Weise erstellt: Wiederholtes „aufaddieren” von Zeichenketten in Schleifen.
ayhan
User
Beiträge: 19
Registriert: Mittwoch 26. November 2014, 13:51

BlackJack hat geschrieben:@ayhan: Das ist Python 2 Quelltext. Du versuchst den wahrscheinlich mit Python 3 auszuführen wo diese ``except``-Zeile syntaktisch falsch ist.

Edit: Man muss da wahrscheinlich so viel anpassen, dass man es eigentlich auch selber schreiben könnte. Zumal das Python-Skript ziemlich schlecht ist. `getopt` ist uralt, da gibt es schon sein Ewigkeiten bessere Alternativen in der Standardbibliothek (`argparse`), statt die CSV-Datei mit Hilfe des `csv`-Moduls aus der Standardbibliothek zu erstellen wird der Inhalt der Exportdatei selbst zusammengebastelt, natürlich ohne so Randfälle wie Zeilenumbruch oder Trennzeichen kommen in einem Feld vor zu berücksichtigen. Ausserdem wird die Ausgabe auf die denkbar ungünstigste Weise erstellt: Wiederholtes „aufaddieren” von Zeichenketten in Schleifen.

Hast du nen Ratschlag dann wie man das am besten realisieren kann für ein Python newbie ?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

ayhan hat geschrieben:Hast du nen Ratschlag dann wie man das am besten realisieren kann für ein Python newbie ?
Zuerst solltest du das Programm mal mit Python 2 laufen lassen. Es ist problemlos möglich mehrere Python-Versionen auf dem Rechner zu haben.

Wenn es um Änderungen und Anpassungen geht, dann solltest du die Sprache natürlich kennen. Arbeite einfach erst einmal das Tutorial durch.
Antworten