Я использую pyodbc, чтобы поговорить с устаревшим файлом Access 2000 .mdb.Использование pyodbc для вставки строк в MS Access MDB, как мне избежать параметров?
У меня есть курсор, и я пытаюсь выполнить это:
c.execute("INSERT INTO [Accounts] ([Name], [TypeID], [StatusID], [AccountCat], [id]) VALUES (?, ?, ?, ?, ?)", [u'test', 20, 10, 4, 2])
Однако это приводит к
pyodbc.Error: ('HYC00', '[HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented (106) (SQLBindParameter)')
Я понимаю, что я могу просто изменить знаки вопроса на буквальное значения, но по моему опыту правильное экранирование строк по базам данных ... не очень.
PHP и mysql объединяются, чтобы привести mysql_real_escape_string
и друзей, но я не могу найти функцию pyobbc для экранирования значений.
Если вы могли бы сообщить мне, что рекомендуемый способ вставки этих данных (из python), это было бы очень полезно. В качестве альтернативы, если у вас есть функция python для выхода из строк odbc, это также будет здорово.
Каково определение длинного типа данных Python? Если он превышает емкость длинного целого числа Jet, то именно поэтому вы не можете его использовать. Если это причина проблемы, это выглядит как ошибка пилота для меня, т. Е. Вы пытались сделать что-то, не понимая полностью типы данных целевого db. –
В Python, longs имеют произвольную емкость. Python будет прозрачно продвигать ints в longs, когда это необходимо, но он не будет автоматически уменьшаться (поэтому int (24) является целым числом, а long (24) является длинным, но оба int (2400000000) и long (2400000000) являются longs). Поэтому совершенно очевидно, что программист Python не знает, использует ли их программа longs, ints или сочетание двух под обложками. И небезосновательно ожидать, что pyobbc примет оба, если они находятся в радиусе действия. –