Итак, у меня есть этот db.model в моей базе данных sqlite в Flask. Это выглядит следующим образом:Какой тип данных следует использовать для изображения в моей базе данных sqlite для колб?
class Drink(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(64), index = True)
kind = db.Column(db.String(64), index = True)
image = db.Column(db.LargeBinary)
def __init__(self, name, kind, image):
self.name = name
self.kind = kind
self.image = image
def __repr__(self):
return '<Drink %r>' % self.name
Таким образом, этот вопрос является то, что у меня есть этот столбец, изображение, которое будет реальная картина, но я не знаю, что тип данных для использования в коде колбах.
Вот код Колба: Колба
class DrinkAPI(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument('name', type = str, required = True, help = 'No name title provided', location = 'json')
self.reqparse.add_argument('type', type = str, required = True, help='No type provided', location = 'json')
self.reqparse.add_argument('image', type = blob, required = True, help='No image provided', location = 'json')
super(DrinkAPI, self).__init__()
def get(self, id):
if checkDrink(id):
info = getDrinkInfo(id)
return {'id': id, 'name': info[0], 'type':info[1], 'image': info[2]}
abort(404)
def put(self, id):
if checkDrink(id):
args = self.reqparse.parse_args()
deleteDrink(id)
drink = Drink(args['name'], args['type'], args['image'])
addDrink(drink)
return {'drink' : marshal(drink, drink_fields)}, 201
abort(404)
def delete(self, id):
deleteDrink(id)
return { 'result': True}
Смотрите, где я установить тип моего reqparse
из image
в blob
? Это даже не фактический тип данных, но я не знаю, что туда положить. Нужно ли подклассы fields.Raw
? Есть идеи? Благодаря
НОВЫЙ ПОДХОД К ВОПРОСУ
Основываясь на некоторых комментариях, кажется, что я должен хранить изображение в моей статической папке. Я могу это сделать. Но как я могу ссылаться на мою базу данных? Это строка, которая соответствует файлу .jpg
?
Почему не хранить местоположение файла изображения в БД? – linbo
Обычно лучше хранить изображения/большие двоичные данные в файловой системе. Не уверен в вашей конкретной реализации SQLite, но большинство этих фреймворков имеют простые способы загрузки/обслуживания изображений в файловую систему и из нее, хранения ключа или пути в БД. Если вы настроены на использование базы данных, возможно, попробуйте: http://stackoverflow.com/questions/11017466/flask-return-image-created-from-database Но будьте осторожны, это будет намного менее эффективно, чем использование файловой системы и обслуживания статические файлы. –
Я предполагаю, что было бы просто иметь изображения в статической папке. Итак, тогда у меня просто будет «String» в моей базе данных, который является путем к самому изображению? Как это работает? Как база данных знает, что это путь, а не просто странная строка? –