Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2009 09:41:13

alexdup
От:
Зарегистрирован: 2009-05-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск из командной строки

Здравствуйте

Написал проект, использующий wxpython, sqlite3. Если запускать из Eclipse - то все нормально. Но если из командной строки:

c:\python26\python.exe d:\workspace\books\src\app.py
- выдает ошибку в sql-запросе: не существует такой-то колонки в таблице, хотя она там во-первых, есть, а во-вторых, из eclips'a-то работает!

Кто сталкивался?
Спасибо.



Офлайн

#2 Май 22, 2009 10:12:01

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Запуск из командной строки

Путь к базе данных у тебя скорее всего относительный… Попробуй задать абсолютный…



Офлайн

#3 Май 22, 2009 15:22:45

alexdup
От:
Зарегистрирован: 2009-05-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск из командной строки

igor.kaist
Путь к базе данных у тебя скорее всего относительный… Попробуй задать абсолютный…
Спасибо большое! Ваш ответ направил меня в нужную сторону, и я разобрался в чем дело.

Попробую вкратце объяснить суть проблемы, так как она представляется мне достаточно забавной.

При первом запуске программы по задумке должен быть создан пустой файл базы данных. Проверка выполняется на существование этого файла. Оказалось, слабое место такой логики - если файл существует, подразумевается, что он создан правильно (все таблицы созданы и настроены), что на самом деле не всегда так. При определении имени файла (при создании или открытии) используется переменная HOME, так вот суть в том, что при запуске программы из-под eclips'а и командной строки рассматриваются, по сути, разные файлы, потому что в первом случае переменной HOME нет, а во втором случае она определена (получаются разные файлы c:\documents\user\books.db и c:\wordspace\src\books.db соответственно). В самом начале разработки программы я создал какие-то таблицы, запустив приложение из командной строки и оно создало файл c:\documents\user\books.db, где находились таблицы старой версии. Потом, в процессе отладки на eclips'e обстоятельства изменились и я добавил некоторые таблицы и поля, то есть я изменил часть программы, где создавались исходные данные. Потом, когда программа была готова, и я занялся тестированием программы, запуская ее из под командной строки.

НО! Программа начала подключаться не к тому файлу базы данных к котому нужно (я думал, что это c:\wordspace\src\books.db - с новыми таблицами, а на самом деле это был c:\documents\user\books.db - со старыми таблицами и с неполным набором полей). Так вот программа полключилась ненужному файлу и недолго думая решила что там в наличии все таблицы и поля, хотя это было далеко не так.

Мораль! Всегда проверяй все возможные ошибкоопасные места. Вначале у меня была мысль сделать подобную проверку, но потом русская лень и такой же авось воспрепятствовали ее реализации: “и так сойдет” - подумал я.

Еще раз спасибо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version