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



我正在设置基于烧瓶的小小的API,以访问DB。我已经解决了运行良好但有put问题的获取方法和发布方法。

我已经将pyodbc交换为pypyodbc,因为它实际上具有"更新"方法。我正在使用10.0.17134.1(较旧的14.00.7010.1000尝试(ODBC 32位驱动程序,Windows 10 Machine上的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

我尝试仅发送一个参数来更改单个字段,但是仍然有点扭曲会遇到相同的错误 - 它会希望您发送2个参数。如果您在"参数"列表中添加一个额外的参数,那么您将获得 pypyodbc.ProgrammingError: ('HY000', 'The SQL contains 2 parameter markers, but 3 parameters were supplied')错误。

另外,DB中的列和表名在俄语(我翻译(中,无法更改。因此,引号在进行查询时是必要的。

ps。插入和精选查询工作效果很好。

好吧,我终于得到了。

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

当这些参数被包含在这些中时,它就像魅力一样工作。

最新更新