Найти - Пользователи
Полная версия: Запуск из командной строки
Начало » Python для новичков » Запуск из командной строки
1
alexdup
Здравствуйте

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

Кто сталкивался?
Спасибо.
igor.kaist
Путь к базе данных у тебя скорее всего относительный… Попробуй задать абсолютный…
alexdup
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 - со старыми таблицами и с неполным набором полей). Так вот программа полключилась ненужному файлу и недолго думая решила что там в наличии все таблицы и поля, хотя это было далеко не так.

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

Еще раз спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB