4

だから私はFlaskのsqliteデータベースにこのdb.modelを持っています。次のようになります。

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

したがって、この問題は、実際の画像になるこの列の画像があることですが、フラスコ コードで使用するデータ型がわかりません。

フラスコのコードは次のとおりです: Flask

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}

reqparsemy ofのタイプを に設定した場所を参照してimageくださいblob。それは実際のデータ型でさえありませんが、そこに何を入れればよいかわかりません。をサブクラス化する必要がありfields.Rawますか? 何か案は?ありがとう


質問への新しいアプローチ

いくつかのコメントに基づいて、画像を静的フォルダーに保存する必要があるようです。私はそれを行うことができます。しかし、データベースでそれを参照するにはどうすればよいでしょうか? .jpgファイルに対応する文字列ですか?

4

2 に答える 2