Я настраиваю маленький API RestFul на основе Flask для доступа к БД.
Я рассмотрел методы GET и POST, которые прекрасно работают, но имеют проблемы с PUT.
Я уже поменял pyodbc на pypyodbc, так как на самом деле у него есть методы update. Я запускаю его на 10.0.17134.1 (пробовал 14.00.7010.1000, который старше) 32-битный драйвер ODBC с 32-битным питоном 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')
ошибка.
Кроме того, имена столбцов и таблиц в БД на русском языке (которые я перевел) и не могут быть изменены. Поэтому кавычки необходимы при выполнении запроса.
PS. Запросы INSERT и SELECT работают просто замечательно.