INT 21h

Домашняя страница самого страшного прерывания

sqlite3socket – Сервер для предоставления неблокирующего доступа к sqlite3 базе данных

№ 8134 В разделах: Администрирование Программирование от April 4th, 2016,

Эта программа написана мной чтобы конкурирующие процессы не натыкались на блокировку базы даннных в sqlite3. Используется на репитере нашего городского автоканала как альтернатива слишком громоздкому для таких целей mysql. Можно организовать доступ как по сети (с биндингом к сетевому интерфейсу), так и через unix socket файл.

http://dev.blindage.org/projects/sqlite3socket

Программа написана на python3. При запуске блокирует файл базы данных и все последующие обращения к нему происходят только по сети. Класс betterSocket расширяет класс socketserver для предоставления более быстрого интерфейса, чем через TCP, но всегда можно переключиться обратно просто изменив переменную конфигурации. У каждого обращения есть собственный хендлер к БД, но хендлер самой БД для всех одинаковый. Это позволяет тредам иметь неблокирующий доступ к данным.

class DB:
    def __init__(self, confDB):
        self.db = sqlite3.connect(confDB)

    def fetchall(self, query):
        dbcursor = self.db.cursor()
        dbcursor.execute(query)
        return dbcursor.fetchall()


class s3socket(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        try:
            sql = self.data.decode('UTF-8')
            sqlresult = dbHandler.fetchall(sql)
            answer = ['result', sqlresult]
        except sqlite3.Error as er:
            answer = ['error', er.args[0]]

        self.request.sendall(bytes(json.dumps(answer, ensure_ascii=False), 'UTF-8'))

Все SQL запросы отправляются простым текстом, а ответ приходит массивом в JSON. Возврат объекта пока еще не реализован, но планы имеются. Настройка происходит очень просто:

Взаимодействовать с БД очень просто. Можно даже на bash. Примеры можно посмотреть в wiki.

Нет комментариев »

Оставьте ваш комментарий »

Форма отправки комментария

CAPTCHA
*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?
  • Александр: Иногда нужна техника без доступа интернета и компьютера. Для хранения паролей, счетов, записей и т.д....