Ich weiß, dass es vielleicht zu spät ist, diese Frage zu beantworten, aber in diesen Tagen versuchte ich, etwas Ähnliches zu lösen, und keine der vorgeschlagenen Lösungen scheint das Hauptproblem aufzuklären. Natürlich basiert jede Best Practice auf Ihren Bedürfnissen. Im Allgemeinen finden Sie jedoch, dass das Einbetten einer Datei in die Datenbank keine gute Übung ist. Es hängt davon ab. Ich lese die "Storing Binary files in the Database" von postgresql Wiki produziert, entdeckte ich, dass es einige Fälle gibt, in denen diese Praxis stattdessen sehr empfohlen wird, zum Beispiel wenn die Dateien ACID sein müssen. In diesen Fällen, zumindest in Postgres, bytea ist der Datentyp gegenüber Text oder BLOB-Binärcode zu bevorzugen, manchmal auf Kosten von etwas höheren Speicheranforderungen für den Server. In diesem Fall: 1) Sie brauchen keine speziellen Dialekte. Der Datentyp LargeBinary reicht aus, da er als "großer und/oder nicht erweiterter Binärtyp für die Zielplattform" übersetzt wird. 2) In PostgreSQL sind natürlich keine Encode/Decode-Funktionen notwendig, natürlich in diesem speziellen Fall. 3) Wie ich bereits sagte, ist es nicht immer eine gute Strategie, die Dateien im Dateisystem zu speichern. Verwenden Sie auf keinen Fall einen Textdatentyp mit base64-Codierung. Ihre Daten werden mehr oder weniger der 33% aufgeblasen, so dass in einem riesigen Lager Auswirkungen führt, wohingegen bytea nicht den gleichen Nachteil hat
Damit ich diese Änderungen an Ihrem Modell vorschlagen:
class User_tbl(db.Model):
id = db.Column(db.Integer,primary_key=True)
mobile=db.Column(db.String(13),unique=True)
country=db.Column(db.String(30))
image=db.Column(db.LargeBinary)
Dann sind Sie Sie können Dateien in Postgres speichern, indem Sie einfach Ihren FileStorage Parameter als binären Wert übergeben:
image = request.files['fileimg'].read()