Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2015 11:36:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Iskatel
перед тем как полезть в базу, проверь нет ли на диске файла с именем “не лезь в базу”.
Если уж велосипедить, то правильно. Создавать файл блокировки надо в каталоге /tmp, а лучше воспользоваться модулем
https://pypi.python.org/pypi/lockfile



Офлайн

#2 Авг. 24, 2015 11:40:19

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Вопрос больше в том что, у ТС не sqlite. И ТС даже не спрашивал на что ему поменять shelve.
Это “добрые люди” понеслись с советами…

А за lockfile, спасибо, не знал (я сам новичек )

Офлайн

#3 Авг. 24, 2015 13:30:34

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

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)

Офлайн

#4 Авг. 24, 2015 13:43:21

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Shaman
Вы какую-то ерунду говорите.
Возможно. Но это больше зависит от того, что понимать под словом “одновременно”, и смысл слова “блокировка” В частности я подразумевал работу с одними и теме же данными.

Офлайн

#5 Авг. 24, 2015 14:20:05

AngelFrei
Зарегистрирован: 2015-08-23
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Предположительно за минуту может быть до 1000 обращений к БД, раз в 5 секунд к этой же БД идёт обращение другой программы, вероятность “наткнуться друг на друга” очень большая. Вариант с созданием\удалением файла от Iskatel мне понятен, а вот с ещё неизученным мной sql - не очень. Возможно для выбора способа стоит учесть отличия в скорости изменения БД через модуль shelve и sql, и есть ли вообще эта разница в скорости? Важна каждая 0.01с

P.S. Спасибо за ваши ответы, не ожидал увидеть столько помощи

Офлайн

#6 Авг. 24, 2015 14:22:31

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

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

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

P.S. Все равно ТСу придется переходить на БД. Рано или поздно. Вот и дал такой совет. Shelve вещь хорошая, но если возникли такие вопросы - пора уже и взрослеть

Офлайн

#7 Авг. 24, 2015 14:24:51

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы

Офлайн

#8 Авг. 24, 2015 14:25:36

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

AngelFrei
А SQL учить не надо, хоть и желательно. В ORM свой синтаксис на уровне объектов. Возьмите sqlalchemy и прочитайте первые 15 страниц. Все сразу поймете.

Офлайн

#9 Авг. 24, 2015 14:27:17

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Iskatel
4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы

Для одновременной работы я написал. Конкретно в алхимии есть scooped_session.

Офлайн

#10 Авг. 24, 2015 14:32:28

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Работа с одной БД из двух программ

Iskatel
4kpt_III Да не в этом дело, насколько я понял разногласия возникли по поводу возможности одновременной работы
У Вас получается, даже прочитать разные таблицы невозможно.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version