Запрос на обновление Python SQL: ожидается строка или целочисленный адрес вместо экземпляра экземпляра
Я использую Python 2.7 и pypyodbc для выполнения запросов SQL, но всякий раз, когда я запускаю запрос на обновление с использованием python,
cursor.execute("UPDATE tbl_User SET gender = ? WHERE id = 1", ['male'])
Я получаю ошибку:
TypeError: string or integer address expected instead of instance instance
Тот же запрос работает, если я запускаю его непосредственно на SQL Server.
2 ответа
Проблема была в том, что я не поставил точку с запятой в конце запроса. Решение:
cursor.execute("UPDATE tbl_User SET gender = ? WHERE id = 1;", ['male'])
Как насчет этого:
gender = 'male'
cursor.execute("UPDATE tbl_User SET gender = {:s} WHERE id = 1".format(gender))
Также убедитесь, что версия sqlite для Python и SQL Server совпадают. Для питона один тип:
import sqlite3
print(sqlite3.sqlite_version)