【问题标题】:(sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type(sqlite3.InterfaceError) 错误绑定参数 0 - 可能是不支持的类型
【发布时间】:2018-02-26 17:32:16
【问题描述】:

我正在使用带有 Flask-SQLALCHEMY 的 REST API 构建一个网站。

我一直在尝试为特定 API 添加更新。

它给了我一个错误,上面写着

(sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type. [SQL: u'SELECT cowgroup.cownumber AS cowgroup_cownumber, cowgroup.groupnumber AS cowgroup_groupnumber, cowgroup.groupname AS cowgroup_groupname, cowgroup.groupdescription AS cowgroup_groupdescription, cowgroup.attributes AS cowgroup_attributes, cowgroup.user AS cowgroup_user \nFROM cowgroup \nWHERE cowgroup.groupnumber = ?'] [parameters: ({'groupname': u'"Test1"', 'cownumber': u'["365","366","367"]', 'user': u'pk@gmail.com', 'attributes': u'["pasturenumber","sex","breed","height","weight","animaltype","status","herd","trial"]', 'groupnumber': u'1011', 'groupdescription': u'"Test1"'})]"

Views.py 代码

    def patch(self, groupnumber):
    group_query = Group.query.filter_by(groupnumber=groupnumber)
    raw_dict = request.form
    try:
        schemaGroup.validate(raw_dict)
        for key, value in raw_dict.items():
            setattr(group_query, key, value)

        group_query.update(raw_dict)
        return self.get(groupnumber)

    except ValidationError as err:
        resp = jsonify({"error": err.messages})
        resp.status_code = 401
        return resp

    except SQLAlchemyError as e:
        db.session.rollback()
        resp = jsonify({"error": str(e)})
        resp.status_code = 401
        return resp

Models.py 代码

class Group(db.Model, CRUD):
__tablename__ = 'cowgroup'
cownumber = db.Column(db.Text)
groupnumber = db.Column(db.Integer, primary_key=True)
groupname = db.Column(db.Text)
groupdescription = db.Column(db.Text)
attributes = db.Column(db.Text)
user = db.Column(db.Text)

def __init__(self, cownumber, groupnumber, groupname, groupdescription, attributes,user):
    self.cownumber = cownumber
    self.groupnumber = groupnumber
    self.groupname = groupname
    self.groupdescription = groupdescription
    self.attributes = str(attributes)
    self.user = user


class Group_Schema(Schema):
    not_blank = validate.Length(min=1, error='Field cannot be blank')
    id = fields.Integer(dump_only=True)  # WHY DOES THIS HAVE TO BE HERE???
    cownumber = fields.String(validate=not_blank)
    groupnumber = fields.Integer(validate=not_blank)
    groupname = fields.String()
    groupdescription = fields.String()
    attributes = fields.String()
    user = fields.String()

    # self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/group/"
        else:
            self_link = "/group/{}".format(data['attributes']['groupnumber'])
        return {"self": self_link}

    class Meta:
        type_ = 'group'

您可以在此处查看我将要传递的数据的架构,我还将把要传递的数据放在此架构的下方。

"cownumber": "[\"365\",\"366\",\"367\"]",
"groupnumber": 1011,
"groupname": "Test1",
"user": "pk@gmail.com",
"attributes": "[\"pasturenumber\",\"sex\",\"breed\",\"height\",\"weight\",\"animaltype\",\"status\"]",
"groupdescription": "Test1"

有人可以调查一下并帮助我做错了什么。 我找到了相关主题,但它们符合“cur.execute” 但是我通过 SQLALCHEMY 和 raw_dict 发送数据,所以这对我没有帮助。

【问题讨论】:

    标签: javascript python ajax flask-sqlalchemy


    【解决方案1】:

    在 Views.py 中我不得不改变一些东西:

    我在下面发布我的答案希望这对某人有所帮助。

        def patch(self, groupnumber):
        group_query = Group.query.get_or_404(groupnumber)
        raw_dict = request.form
        try:
            schemaGroup.validate(raw_dict)
            for key, value in raw_dict.items():
                setattr(group_query, key, value)
    
            group_query.update()
            return self.get(groupnumber)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多