Ergebnis 1 bis 4 von 4

Thema: Problem bei INSERT bytea

  1. #1
    Hannes23 ist offline Benutzer
    Registriert seit
    07.05.2010
    Beiträge
    40

    Standard Problem bei INSERT bytea

    Hallo zusammen,

    ich möchte gerne über ein Python-Script eine PDF-Datei in das bytea-Feld einer Tabelle in einer PG-Datenbank schreiben.

    Die Tabelle sieht folgendermaßen aus:

    Code:
    -- Table: test
    
    -- DROP TABLE test;
    
    CREATE TABLE test
    (
      id serial NOT NULL,
      "document" bytea,
      "text" text
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE test OWNER TO um;
    COMMENT ON TABLE test IS 'Testtabelle';
    Mein Versuch sieht so aus (Leider muss ich hier Python-Code posten, aber der Code spielt hier eigentlich keine Rolle - es geht mehr darum, was Postgres von meinem Programm als Eingabewert erwartet):

    Code:
        dateipfad = "/home/user/meinedatei.pdf"
        text = "bla bla"
    
        sql="""INSERT INTO test (document, text) VALUES (%s, '%s')""" % (dateipfad, text)
         
        curs.execute(sql)
        conn.commit()
    Fehlermeldung:
    Code:
    psycopg2.ProgrammingError: syntax error at or near "/"
    LINE 1: INSERT INTO test (document, text) VALUES (/home/user/...
    Kann mir da jemand weiterhelfen?

    Vielen Dank für jeden Tip!!

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Hannes23 Beitrag anzeigen
    Hallo zusammen,

    ich möchte gerne über ein Python-Script eine PDF-Datei in das bytea-Feld einer Tabelle in einer PG-Datenbank schreiben.

    Die Tabelle sieht folgendermaßen aus:

    Code:
    -- Table: test
    
    -- DROP TABLE test;
    
    CREATE TABLE test
    (
      id serial NOT NULL,
      "document" bytea,
      "text" text
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE test OWNER TO um;
    COMMENT ON TABLE test IS 'Testtabelle';
    Mein Versuch sieht so aus (Leider muss ich hier Python-Code posten, aber der Code spielt hier eigentlich keine Rolle - es geht mehr darum, was Postgres von meinem Programm als Eingabewert erwartet):

    Code:
        dateipfad = "/home/user/meinedatei.pdf"
        text = "bla bla"
    
        sql="""INSERT INTO test (document, text) VALUES (%s, '%s')""" % (dateipfad, text)
         
        curs.execute(sql)
        conn.commit()
    Fehlermeldung:
    Code:
    psycopg2.ProgrammingError: syntax error at or near "/"
    LINE 1: INSERT INTO test (document, text) VALUES (/home/user/...
    Kann mir da jemand weiterhelfen?

    Vielen Dank für jeden Tip!!

    das müßte lauten: VALUES('/home/user...','bla') heißen, also mit den ' um die Werte.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Hannes23 ist offline Benutzer
    Registriert seit
    07.05.2010
    Beiträge
    40

    Standard

    Hallo Andreas,

    vielen Dank für die schnelle Antwort!

    Wenn ich das so mache bekomme ich zwar keine Fehlermeldung mehr, aber dann steht der Pfad zur Datei ja als String in der Datenbank oder nicht? Oder ist dann tatsächlich mein pdf in dem Datenfeld gespeichert?

  4. #4
    Hannes23 ist offline Benutzer
    Registriert seit
    07.05.2010
    Beiträge
    40

    Standard

    Ich habe das Problem mittlerweile gelöst und hinterlasse das ganze jetzt mal hier für die Nachwelt - in der Hoffnung, dass es noch anderen nutzt. Aus dem INSERT habe ich mittlerweile ein UPDATE gemacht, das ganze funktioniert aber analog natürlich auch mit INSERT:


    Code:
    with open (mypdf,"rb") as f:
        filedata = f.read()
        filedata=filedata.encode("base64")
        
        
    curs.execute("""UPDATE public.test SET document=%(bytea)s;""",{'bytea' : psycopg2.Binary(filedata)})
    conn.commit()

Ähnliche Themen

  1. Insert Problem
    Von minimike im Forum SQL
    Antworten: 2
    Letzter Beitrag: 24.07.2011, 11:21
  2. INSERT-Abfrage: Problem mit den IDs
    Von sql-dummi im Forum SQL
    Antworten: 3
    Letzter Beitrag: 23.11.2009, 11:32
  3. Problem mit Insert
    Von AndreasBeginner im Forum SQL
    Antworten: 3
    Letzter Beitrag: 10.07.2009, 08:49
  4. pg_dump - bytea - Problem
    Von szk im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 11.12.2006, 19:13
  5. pg_dump - bytea - mysql - Problem
    Von szk im Forum Migration
    Antworten: 1
    Letzter Beitrag: 12.06.2006, 13:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum