【问题标题】:Part of Data get lost on adding to session and commiting flask部分数据在添加到会话和提交烧瓶时丢失
【发布时间】:2016-12-01 03:50:49
【问题描述】:

型号是

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 变量中的所有文件名。并在中间加入 *。

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(user) 后跟 db.session.commit()。 在 photourl 列下的数据库的 user 表中,只有 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('*'))

必填网址应在照片网址中。但每个帖子只有一个单个网址

我只是疯了,不知道发生了什么?

【问题讨论】:

  • 您是否尝试过*以外的其他方法?
  • 是的,我首先尝试使用 ,然后我继续使用 *
  • 你是如何从数据库中读回的?..你能发布代码吗?带输出..
  • 我已经编辑了帖子并添加了我阅读数据库的方式。但是,在数据库表本身中,我找不到 url 的后半部分。 IE。 * 之后的部分
  • 可以尝试将* 替换为其他字符,例如S ..

标签: python mysql session flask flask-sqlalchemy


【解决方案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"]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2018-08-18
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多