带参数的 PypyODBC:[ODBC Microsoft Access Driver] 参数太少。预期 3(不是日期问题)

PypyODBC with parameters: [ODBC Microsoft Access Driver] Too few parameters. Expected 3 (not a Date issue)

我正在基于 Flask 设置小型 RestFul API 以访问数据库。 我已经解决了 GET 和 POST 方法,它们运行良好,但 PUT 有问题。

我已经将 pyodbc 换成了 pypyodbc,因为它实际上有 'update' 方法。我 运行 它在 10.0.17134.1 上(试过 14.00.7010.1000 更旧)ODBC 32 位驱动程序和 32 位 python 3.7.2 在 Windows 10 机器上。

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

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

此外,数据库中的列和 table 名称是俄语(我翻译的),无法更改。所以查询时必须加引号。

PS。 INSERT 和 SELECT 查询工作得很好。

好的,我终于明白了。

所以,显然 WHERE 子句需要单引号 (') 而不是双引号 (")。

当参数包含在其中时,它就像一个魅力。