2016-07-27 5 views
0
をコミットに迷子

モデルは、ここで一部がセッションに追加し、フラスコ

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()) 

私はすべての詳細を写真で追加します。

のファイル名に保存されているすべてのファイル名のリストを、以下のコードで作成します。*中に*で結合してください。

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

サンプル出力は、印刷ファイル名の端子に現れ

mic16.jpg*nepal_earthquake_death6.png 

すべてのファイル名を結合した後です。私はデータベースにそれを保存します。

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

ここ端末におけるユーザの印刷出力はINFOMATIONが正しくロードされていることを示している

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

あります。

ここで私はdb.session.add(user)の後にdb.session.commit()を続けます。フォトカラムの下にあるデータベースのユーザテーブルmic16.jpg部分のみが保存され、残りの部分は省略されていますつまり前の部分が保存されています。

MYSQLデータベースとphpmyadminを使用している場合、database.Myデータベースにはエントリがありません。私はを使用してデータベースを読んでいます。

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

必須のURLは写真に記載されています。しかし、の単一のURLだけが各投稿のためにになります。

私はちょっと心配していて、何が起こっているのか分からないのですか?

+0

あなたは '*'以外のものを試しましたか? – polku

+0

はいまず最初に試してみましたが、次に進みました。 –

+0

どうやってデータベースから読み返しましたか? –

答えて

1

photoourl文字列のサイズで判断すると、アスタリスク*で区切られた文字列の中にいくつかの画像ファイル名を保存します。より良い選択肢は、各ファイル名を文字列として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"] 
} 
関連する問題