Seite 1 von 1

Misch aus Groß- und Normaltext in DB einfügen

Verfasst: Montag 25. März 2019, 10:33
von DMD-OS
hi
ich würde gern den Text: "ABRUFZEITPUNKT: Frei wählbar!" als element in sqlite3 einfügen.
die struktur die ich verwende ist:

Code: Alles auswählen

ID INTEGER PRIMARY KEY AUTOINCREMENT                        data2 TEXT
                                                    ABRUFZEITPUNKT: Frei wählbar!
code-snippet:

Code: Alles auswählen

    def db_insert_MAIN(self, table_name, column_names, result_data):
        with self.conn:
            questionmarks = []
            for _ in column_names:
                questionmarks.append(' ?')
            sql = "INSERT INTO " + table_name + " (" + ', '.join(column_names) + ") VALUES (" + ', '.join(
                questionmarks) + ")"
            self.cursor.executemany(sql, result_data)
in der datenbank steht dann als eintrag nur BLOB.
ich habe schon versucht den type von TEXT auf NVARCHAR zu ändern, funktioniert aber leider auf nicht. :(
wie macht man es richtig?

Re: Misch aus Groß- und Normaltext in DB einfügen

Verfasst: Montag 25. März 2019, 10:49
von DMD-OS
ok. das problem konnte ich lösen.
der eigentliche text war sehr viel länger, darin zwischendurch viele aufeinanderfolgende leerzeichen.
als ich diese überall weggenommen hatte, lief es.
warum nicht zu viele leerzeichen zwischendurch auftauchen dürfen, weiß ich nicht, würde ich aber gern wissen :)

Re: Misch aus Groß- und Normaltext in DB einfügen

Verfasst: Montag 25. März 2019, 20:26
von DasIch
Das Problem ist dass du SQL per String Formatting zusammen setzt. Das ist nicht nur sehr unpraktisch und sehr fehleranfällig, sondern auch großartiger weg eine Anwendung anfällig für SQL Injection zu machen.

Es wesentlich besser eine DSL oder ein ORM zu nutzen, SQLAlchemy hätte beides. Wenn du wirklich komplexes SQL generieren möchtest ist vielleicht auch noch jinjasql eine Option, sieht aber nicht so aus als ob in der Situation stecken würdest.