2016-07-27 13 views
0

該模型是部分迷路上增加了會話和commiting燒瓶

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) 

這裏photourl是貼照片的URL。

表格提交後。

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

我添加所有的細節沒有photourl。

現在我列出所有在文件名中存儲的文件名,下面的代碼中存放變量,並且在中間加入*。

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

示例輸出出現在印製的文件名的終端是

mic16.jpg*nepal_earthquake_death6.png 

所有的文件名組合之後。我將它存儲在數據庫中。

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

在終端的用戶這裏打印輸出是

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

這表明信息來源被正確裝入。

現在,當我做db.session.add(用戶)後跟db.session.commit()。數據庫的用戶表僅在photourl列中mic16.jpg部分被存儲,並且該部分的其餘部分被忽略即存儲*之前的部分。

數據庫中沒有條目。我的數據庫如果是MYSQL數據庫並且使用了phpmyadmin。我正在使用讀取數據庫。

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

需要的網址是在photourls中。但每個帖子只有單個網址

我只是出於我的想法,不知道發生了什麼事情?

+0

你用'*'以外的東西試過了嗎? – polku

+0

是的第一次我嘗試過,然後我去* –

+0

你是如何從數據庫讀回來的?..你可以發佈代碼嗎?與輸出.. –

回答

1

根據您的photourl字符串的大小來判斷,您希望將多個圖像文件名保存在由星號*分隔的字符串中。更好的選擇是將文件名存儲在JSON數組中,並將每個文件名作爲字符串存儲。

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

您可以使用getlist一次上傳多個圖像文件。

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

JSON將按如下所示進行存儲。

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