Я начал создавать систему инвентаризации в Python для моего работодателя. У меня графический интерфейс пользователя в основном завершен, и у меня есть вопросы по поводу бэкэнда.
Как я должен хранить информацию?
Программа будет находиться в папке Dropbox, к которой могут обращаться сразу несколько человек. Должен ли я использовать базу данных SQLite, и после выполнения таких функций, как "добавить запас", открыть соединение, выполнить изменение и закрыть соединение? Позволит ли это нескольким пользователям одновременно открывать инвентарь? Есть ли лучшие способы справиться с этим?
Там не будет много предметов инвентаря. Было бы лучше использовать объекты Python и методы объекта для хранения и манипулирования информацией?
Вы можете довольно легко управлять базой данных sqlite с помощью Python.
https://docs.python.org/3/library/sqlite3.html
import sqlite3 as sql
class SQLManiuplator:
def __init__(self, fp=None):
path = fp
if not fp:
path = "example.db"
self.path = path
def add_item_to_inventorytable(self, item):
with sql.connect(self.path) as conn: # close automatically
c = conn.cursor()
# Use '?' substitution to sanitize inputs per sqlite3 docs
c.execute('''
INSERT INTO inventory VALUES (?)''', item)
c.commit()
# More CRUD functions
Вы можете создать красивый CRUD API с этим шаблоном и отобразить операции в вашем графическом интерфейсе. С точки зрения дизайна вам решать, какие операции вы хотите предоставить своим пользователям. Например, я не думаю, что вы захотите сделать CREATE TABLE
доступным для пользователей, поэтому я не включил это. (Но это означает, что вам придется вручную создавать таблицы и определять, какие столбцы в них существуют.)
Вы уже сказали, что это будет довольно легкая система инвентаризации, но не стоит и говорить, что в масштабах предприятия это решение неудачно.
splat
оператор. Узнав о decorators
в Python, я многому научился в splat