python - 将python中生成的图像存储到Django数据库(MySQL)

标签 python django

我是 django 的新手,我一直在搜索该站点以找到存储使用 python 生成的图像的好方法(关于将其保存到本地文件夹、文件或数据库似乎存在矛盾的观点)。我网站的唯一目的是一直制作二维码。在我的本地机器上,我会将它保存在我的程序文件夹中,例如:

import pyqrcode
qr = pyqrcode.create("{'name': 'myqr'}")
qr.png("horn.png", scale=6)
print "All done!"

我遇到的情况是,我要处理很多用户做同样的事情。我怀疑将它保存到本地文件夹是否是一个可行的选择。我准备将这些图像保存为 mysql 中的 blob。 有没有人做过这种事情?如果是这样,最好的实现方式是什么。示例代码也会有所帮助。

最佳答案

在数据库中存储图像有点极端。为了减轻数据库负担,我不会将它们存储在数据库中,而是存储在您服务器上的一个文件夹中。

我理解您的问题,有些用户可能会创建相同的二维码。在这种情况下,我会创建一个这样的数据库表:

CREATE TABLE qrcodes (
   value TEXT PRIMARY KEY,
   fname TEXT
);

通过此表,您可以通过编码值找到二维码。如果给定值存在一个条目,那么您可以只返回其名称被存储的文件的内容。

留下一个问题:如何创建文件名。有很多可能性。一种是创建一个 UUID并从中创建一个文件名。另一种选择是使用全局计数器并为每个文件指定一个新编号。当然,计数器必须存储在数据库表中。

当然,如果需要,您仍然可以将图像存储在数据库中。只是不要使用 fname 字段,而是使用存储内容的 blob 字段。该解决方案应该适用于大多数数据库,但当您拥有大量数据时,它可能比文件方法慢。

关于python - 将python中生成的图像存储到Django数据库(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954666/

相关文章:

python - 我正在尝试使用 Python 在 jar 文件中搜索 '.class' 文件

python - 如何在函数返回后打印语句?

python - Pytest:测试运行后如何显示生成的报告?

管理员中的django过滤器多选列表

django - Selenium 测试、LiveServerTestCase、Django 和 NoReverseMatch

python - 用于删除实体名称的正则表达式

django {{ STATIC_URL }} 有时不起作用

django 带有表单集的多种表单

python - DRF API 端点获取 "Authentication credentials were not provided"

python - 需要帮助格式化 Google API 的日期时间时区