我正在尝试使用 Flask 构建和应用程序,我看过一些教程和书籍以及一些代码[1],它们解释了如何为数据库设置声明整数和字符串。然而,他们没有解释如何存储图像。我现在很困惑,虽然存储图像的自然方法是在数据库中,但阅读 Flask 站点上的一些文档[2],文件系统是存储图像的地方。我只是在阅读 Flask 开发书籍时做出第一个假设,即使用 largeBinary 进行声明是正确的,但这只是我的猜测,正如您在下面的代码中看到的那样。有人可以帮我解决这个问题吗?如果我的问题不清楚,请告诉我。
Class User(Base):
__table__ = 'user'
id = Column(Integer, primary_key = True)
name Column(String(80), nullable=False)
email = Column(String(250), nullable=False)
image = Column(LargeBinary, nullable = True)
[1]https://github.com/lobrown/Full-Stack-Foundations/blob/master/Lesson_1/database_setup.py https://github.com/lobrown/Full-Stack-Foundations/blob/master/Lesson_1/database_setup.py
[2]http://flask.pocoo.org/docs/0.10/patterns/fileuploads/ http://flask.pocoo.org/docs/0.10/patterns/fileuploads/
有一个图书馆叫SQLAlchemy-ImageAttach https://sqlalchemy-imageattach.readthedocs.io/en/1.0.0/它提供了一种创建具有图像对象的实体的方法。这些可以通过一些网址公开。
否则,您可以通过以下方式直接获取文件对象SingleImageSet
class.
通过该库,您可以从两个存储中进行选择,例如文件系统或 Amazon 的 S3。文档里面有一个描述的例子 https://sqlalchemy-imageattach.readthedocs.io/en/1.0.0/guide/declare.html#object-type(灰色框)如何先定义存储,然后定义 User 实体并拥有 UserPicture 实体。
from sqlalchemy import Column, ForeignKey, Integer, Unicode
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy_imageattach.entity import Image, image_attachment
Base = declarative_base()
class User(Base):
"""User model."""
id = Column(Integer, primary_key=True)
name = Column(Unicode, nullable=False)
picture = image_attachment('UserPicture')
__tablename__ = 'user'
class UserPicture(Base, Image):
"""User picture model."""
user_id = Column(Integer, ForeignKey('user.id'), primary_key=True)
user = relationship('User')
__tablename__ = 'user_picture'
我不知道 Flask,但也许您可以通过一些 wsgi 声明与此处的 Lib 一起使用文件存储。我希望它对你有一点帮助,并给你一些**。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)