2016-07-27 4 views
0

Das Modell istEin Teil der Daten über das Hinzufügen zu Sitzung verloren gehen und commiting Kolben

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    artistname = db.Column(db.String(64)) 
    photourl = db.Column(db.String(1000)) 
    contactInfo = db.Column(db.String(20)) 
    description = db.Column(db.String(500)) 
    date = db.Column(db.Date) 
    def __repr__(self): 
     return '<User %r>' % (self.photourl) 

Hier photourl die URL der Fotos ist gebucht.

Nach der Formularübergabe.

user = User(artistname = form.artist.data,photourl = "", 
      description = form.description.data,contactInfo = form.contactinfo.data,date = datetime.datetime.utcnow().date()) 

Ich füge alle Details ohne photourl hinzu.

Jetzt mache ich eine Liste aller Dateinamen, die in Dateiname Variable in unter Code gespeichert ist.Und verbinden Sie mit * in der Mitte.

filename = "*".join(filename) 
print(filename) 

Die Probe erschien Ausgangsklemme der gedruckten Dateiname ist

mic16.jpg*nepal_earthquake_death6.png 

Nachdem alle Dateinamen kombinieren. Ich speichere es in der Datenbank von.

user.photourl = filename 
print(user) 
db.session.add(user) 
db.session.commit() 

Hier gedruckte Ausgabe des Benutzers in Terminal

<User u'mic16.jpg*nepal_earthquake_death6.png'> 

die zeigt, dass Informationen Benutzer richtig eingelegt ist.

Jetzt, wenn ich mache db.session.add (Benutzer), gefolgt von db.session.commit(). In Benutzer Tabelle der Datenbank unter Foto Spalte nur mic16.jpg Teil wird gespeichert und Rest des Teils ist d. H. Teil vor * ist gespeichert.

Es gibt keinen Eintrag in der Datenbank.Meine Datenbank, wenn eine MySQL-Datenbank und mit phpmyadmin. Ich lese die Datenbank mit.

posts = User.query.order_by(User.date.desc()).limit(5).all() 
photourls = [] 
for i in posts: 
    photourls.append(i.photourl.split('*')) 

Erforderliche URLs sind in den Fotos zu finden. Aber nur eine einzelne URL ist für jeden Beitrag vorhanden.

Ich bin nur verrückt und habe keine Ahnung was los ist?

+0

Haben Sie mit etwas anderem als '*' versucht? – polku

+0

ja zuerst habe ich versucht, dann ging ich weiter zu * –

+0

Wie hast du aus der Datenbank gelesen? .. Kannst du den Code dafür schreiben? mit Ausgabe .. –

Antwort

1

Gemessen an der Größe Ihrer Fotozeile, möchten Sie mehrere Bilddateinamen innerhalb einer durch ein Sternchen * getrennten Zeichenfolge speichern. Eine bessere Alternative wäre das Speichern der Dateinamen in einem JSON-Array mit jedem Dateinamen als String.

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    artistname = db.Column(db.String(64)) 
    photourls = db.Column(JSON) 

können Sie getlist verwenden, um mehrere Bilddateien zu.

def upload(): 
    uploaded_images = flask.request.files.getlist("file") 

Der JSON würde wie folgt gespeichert werden.

{ 
    "photourls":["mic16.jpg", "nepal_earthquake_death6.png"] 
} 
Verwandte Themen