Форум сайта python.su
В итоге я не знаю чего ему не нравится.
Выдал вот:
pyodbc.ProgrammingError: ('42000', '[42000]' [Microsoft] [??????? ODBC dBase] ?????? ?????????? ? ?????????? CREATE TABLE. {-3551} {SQLExecDirectW}')
import pyodbc S = 'Driver={Microsoft dBase Driver (*.dbf)}; DefaultDir=D:\\MyProg' db = pyodbc.connect(S, autocommit=True) cur2 = db.cursor() a=1 if a == 1: cur2.execute("CREATE TABLE pyodbc (id NUMERIC(5), fio CHAR(40), dr DATE)") cur2.close() db.close()
Отредактировано Pluto (Июль 28, 2013 10:44:02)
Офлайн
Ах ты ж етить твою налево!
Numeric(5) этому гаду не понравился! Нельзя, оказывается, указывать длину поля numeric. Он желает создавать такие поля только длиною в 20 символов, пять из которых идут на дробную часть числа и один символ на точку.
ЗАРАЗА!!!!! А если мне нужна КОНКРЕТНАЯ длина поля numeric? Нужна до зарезу!
Поубивал бы!
П.С. Остался открытым вопрос по поводу вопросов в тексте ошибки. (Вот ведь тавтология, блин…)
Офлайн
Погуглил на эту тему, попробуйте использовать другой ODBC драйвер для доступа к dbf. Что нибудь типа “Microsoft FoxPro VFP Driver”. А вообще, зачем вам ODBC? Есть же нативные библиотеки
Офлайн
PlutoПроверить не могу, нет windows под рукой, но скорее всего текст ошибки в unicode выводится в консоль с cp1251 или cp866, попробуйте перехватывать исключение и логировать в файл с utf-8
Остался открытым вопрос по поводу вопросов в тексте ошибки. (Вот ведь тавтология, блин…)
Офлайн
PooHДля скорости. Мне надо не просто dbf-ку поглядеть, мне надо к ней запросы рисовать, select'ы всякие разные безобразные. Выборки делать. Объединения таблиц делать. И т.д.
А вообще, зачем вам ODBC? Есть же нативные библиотеки
Офлайн
Оказывается, ODBC - это совсем не для скорости…
Офлайн