带有参数的PypyODBC:[ODBC Microsoft Access驱动程序]参数太少。预期为3(不是日期问题)

时间:2019-05-08 13:55:31

标签: ms-access pypyodbc

我正在基于Flask设置小型RestFul API,以访问数据库。 我已经解决了效果很好的GET和POST方法,但是PUT遇到了问题。

我已经将pyodbc交换为pypyodbc,因为它实际上具有“更新”方法。我在Windows 10计算机上的10.0.17134.1(尝试使用14.00.7010.1000或更早)的ODBC 32位驱动程序和32位python 3.7.2上运行。

def put(self, code_id):
        query = request.get_json()[0]
        sql = 'UPDATE `employees` SET `employee`=?, `access_level`=? WHERE `CODE`="' + code_id+ '";'
        params = [query['Employee'], query['Access level']]

        cursor.execute(sql, params)
        return Response(status=200)

我遇到下一个错误: pypyodbc.DatabaseError: ('07002', '[07002] [ODBC Microsoft Access Driver] Too few parameters. Expected 3

我尝试仅发送一个参数来更改单个字段,但仍然会出现相同的错误,但要稍加改动-它会希望您发送两个参数。如果您在“参数”列表中添加一个额外的参数,则会得到 pypyodbc.ProgrammingError: ('HY000', 'The SQL contains 2 parameter markers, but 3 parameters were supplied')错误。

此外,DB中的列名和表名是俄语(我翻译了),无法更改。因此,进行查询时必须使用引号。

PS。 INSERT和SELECT查询效果很好。

1 个答案:

答案 0 :(得分:0)

好的,我终于明白了。

因此,显然WHERE子句需要单引号(')而不是双引号(“)。

将参数括在其中时,它就像是一种魅力。