Найти - Пользователи
Полная версия: Работа с одной БД из двух программ
Начало » Python для новичков » Работа с одной БД из двух программ
1 2 3
FishHook
Iskatel
перед тем как полезть в базу, проверь нет ли на диске файла с именем “не лезь в базу”.
Если уж велосипедить, то правильно. Создавать файл блокировки надо в каталоге /tmp, а лучше воспользоваться модулем
https://pypi.python.org/pypi/lockfile
Iskatel
Вопрос больше в том что, у ТС не sqlite. И ТС даже не спрашивал на что ему поменять shelve.
Это “добрые люди” понеслись с советами…

А за lockfile, спасибо, не знал (я сам новичек )
Shaman
Iskatel
Ну а по сути вопроса - одновременно НЕТ (ни одна БД не даст одновременно, ибо это бред), а по очереди да… Перед открытием базы из программы создавай файл на диске (любой, лишь бы был), так линуксы поступают… закончил - удаляй. Из другой проги тоже самое. Соответственно обе проги ждут пока файла не станет…
Вы какую-то ерунду говорите. https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_(%D0%A1%D0%A3%D0%91%D0%94)
Iskatel
Shaman
Вы какую-то ерунду говорите.
Возможно. Но это больше зависит от того, что понимать под словом “одновременно”, и смысл слова “блокировка” В частности я подразумевал работу с одними и теме же данными.
AngelFrei
Предположительно за минуту может быть до 1000 обращений к БД, раз в 5 секунд к этой же БД идёт обращение другой программы, вероятность “наткнуться друг на друга” очень большая. Вариант с созданием\удалением файла от Iskatel мне понятен, а вот с ещё неизученным мной sql - не очень. Возможно для выбора способа стоит учесть отличия в скорости изменения БД через модуль shelve и sql, и есть ли вообще эта разница в скорости? Важна каждая 0.01с

P.S. Спасибо за ваши ответы, не ожидал увидеть столько помощи
4kpt_III
Iskatel
Возможно. Но это больше зависит от того, что понимать под словом “одновременно”, и смысл слова “блокировка” В частности я подразумевал работу с одними и теме же данными.

А каким образом БД еще гарантировать целостность данных? Естественно происходит блокировка. То же самое получается у Вас. Только блокируется все через временный файл, а не на уровне БД. Ну и для работы двух и более программ с одной БД в ОРМе, например в алхимии, предусмотрен специальный механизм (scooped_session). Нужно использовать его.

P.S. Все равно ТСу придется переходить на БД. Рано или поздно. Вот и дал такой совет. Shelve вещь хорошая, но если возникли такие вопросы - пора уже и взрослеть
Iskatel
4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы
4kpt_III
AngelFrei
А SQL учить не надо, хоть и желательно. В ORM свой синтаксис на уровне объектов. Возьмите sqlalchemy и прочитайте первые 15 страниц. Все сразу поймете.
4kpt_III
Iskatel
4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы

Для одновременной работы я написал. Конкретно в алхимии есть scooped_session.
Shaman
Iskatel
4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы
У Вас получается, даже прочитать разные таблицы невозможно.
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