@vante_scribaxxi

Как организовать работу с деньгами в базе данных в python3?

Пишу телеграмм бота для микро инвестиций, который соответственно может принимать платежи и делать вывод средств.

Фишка в том, что сумму на балансе нужно хранить очень осторожно, т.к. в зависимости от нее бот будет осуществлять вывод.

Решил сделать класс, который бы при инициализации коннектится к бд и предоставлял бы собой простой и безопасный интерфейс.

Вопрос:
Как лучше всего обезопасить деньги от непредвиденных обстоятельств?

Лично мне страшно за них, если что-то случится с ботом или сервером, пользователи меня засудят.
Будет полезным вести логи?
Если да, то в каком формате?
  • Вопрос задан
  • 472 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну, опишу, как это обычно делается.
1) значения хранить только в целочисленном виде, соотвественно, если у вас 11 рублей и 20 копеек, в базе должно лежать 1120.
2) никогда не храним сумму (баланс)! ее всегда вычисляем разностью по двум колонкам debet - credit = сумма
3) эти две колонки никогда не растут вниз, только операция прибавления (исключая сторно)
4) всегда вести лог операций, сохраняя дату, старый дебет, старый кредит, новый дебет, новый кредит, тип операции приход/расход/сторно, текстовая запись(ну еще туда же можно долепить параметры операции кому и по какому поводу)
5) сторнирующая проводка - в логах помечаем отдельным типом, отнимаем или дебет или кредит.
Тогда вы всегда можете по логу установить баланс и количество средств на любую операцию. Также всегда можно проконтролировать правильность роста баланса. Ну и в общем, правильная бухгалтерия.

PS. И да, sqlite тут лучше не пользовать, он почти однопоточный - могут быть большие проблемы с одновременной записью.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 11:20
50000 руб./за проект
28 нояб. 2024, в 10:57
50000 руб./за проект
28 нояб. 2024, в 10:52
10000 руб./за проект