2015-06-20 3 views
3

Я новичок в django, и я исследовал сайт, чтобы найти хорошие способы хранения изображений, сгенерированных с помощью python (кажется, что противоречивые представления сохраняются в локальной папке , файл или базу данных). Единственный пейдж моего сайта - делать qrcodes все время. В моей локальной машине я бы сохранить его в своей папке программы, как:Хранение изображений, сгенерированных в python, в базу данных Django (MySQL)

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

Я бегу в ситуации, когда я буду иметь дело с большим количеством пользователей, делающих то же самое. Я сомневаюсь, что сохранение его в локальной папке было бы жизнеспособным вариантом. Я настроен на сохранение этих изображений как blobs в mysql. Кто-нибудь сделал такие вещи? Если да, то какой лучший способ реализовать. Пример кода также будет полезен.

+0

Вы уже делали googling? Его уже много раз спрашивали. http://stackoverflow.com/a/2371424/3872976 – deathangel908

+0

Я googled, и я был более смущен ответами – Godfrey

ответ

3

Сохранение изображений в базе данных - это несколько крайний кейс. Чтобы освободить базу данных, я бы не сохранил их в базе данных, а в папке на вашем сервере.

Я понимаю ваш вопрос, так что некоторые пользователи могут создавать одни и те же qr-коды. В этом случае, я хотел бы создать таблицу базы данных так:

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

С помощью этой таблицы вы можете найти QR-коды от закодированного значения. Если для данного значения существует запись, вы можете просто вернуть содержимое файла, имя которого сохранено.

Остается один вопрос: как создать имена файлов. Есть много возможностей. Можно было бы создать UUID и сделать из него имя файла. Другой вариант - использовать глобальный счетчик и дать каждому файлу новый номер. Счетчик должен храниться в таблице базы данных, конечно.

Конечно, вы все равно можете сохранить изображение в базе данных, если хотите. Просто не используйте поле fname, а поле blob, которое хранит содержимое. Это решение должно работать на большинстве баз данных, но, вероятно, медленнее, чем файловый подход, когда у вас действительно большой объем данных.

+0

Итак, изображения как файлы в папке. И базу данных для отслеживания. Очень информативно. Я попробую этот подход, так как это единственный ответ на данный момент. – Godfrey

Смежные вопросы