我正在基于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查询效果很好。
答案 0 :(得分:0)
好的,我终于明白了。
因此,显然WHERE
子句需要单引号(')而不是双引号(“)。
将参数括在其中时,它就像是一种魅力。