В настоящее время я реализовал это с помощью объекта StringIO. Запись новых байтов в конец объекта StringIO выполняется быстро, но удаление байтов с самого начала происходит очень медленно, поскольку необходимо создать новый объект StringIO, который содержит копию всего предыдущего буфера за вычетом первого фрагмента байтов.
На самом деле наиболее типичным способом реализации FIFO является двухкратное использование буфера с двумя указателями:
Теперь вы можете реализовать это с помощью
StringIO()
, используя.seek()
для чтения / записи из соответствующего местоположения.
SQLite , к сожалению, не поддерживает названия месяцев . Вам нужно будет преобразовать его в название месяца, используя поисковую таблицу, оператор case или переключатель на уровне представления.
Абсолютно верно, что SQLite сосредоточен на функциональности, которая принадлежит уровню хранения данных, а НЕ на функциональности, которая принадлежит ему. в пользовательском интерфейсе, например, форматирование дат с названиями месяцев и т.п. Я настоятельно рекомендую вам принять это как очень полезный совет, чтобы сохранить каждый вид функциональности на соответствующем уровне! -).
Если вы абсолютно заинтересованы в том, чтобы потерять функциональность пользовательского интерфейса на уровне хранения данных, это может в некоторой степени быть втиснутым, например, написав свои собственные функции форматирования на C и подключив их в SQLite, или пройдя через невероятно неуклюжие циклы SQL,