Я создаю систему инвентаризации в Python для своего работодателя. Должен ли я хранить данные инвентаризации в базе данных SQLite?

-2

Я начал создавать систему инвентаризации в Python для моего работодателя. У меня графический интерфейс пользователя в основном завершен, и у меня есть вопросы по поводу бэкэнда.

Как я должен хранить информацию?

Программа будет находиться в папке Dropbox, к которой могут обращаться сразу несколько человек. Должен ли я использовать базу данных SQLite, и после выполнения таких функций, как "добавить запас", открыть соединение, выполнить изменение и закрыть соединение? Позволит ли это нескольким пользователям одновременно открывать инвентарь? Есть ли лучшие способы справиться с этим?

Там не будет много предметов инвентаря. Было бы лучше использовать объекты Python и методы объекта для хранения и манипулирования информацией?

  • 0
    Если вы пытаетесь выполнять операции с базами данных, вам, вероятно, следует использовать базу данных. В противном случае, как вы планируете использовать объекты Python для отслеживания изменений инвентаря?
  • 0
    Я подумал, может быть, создание объектов с такими атрибутами, как «количество», «цена» и т. Д., Сработало бы, если бы был способ сохранить изменения атрибутов при закрытии и повторном открытии приложения.
Показать ещё 3 комментария
Теги:
class
inventory-management

1 ответ

0

Вы можете довольно легко управлять базой данных 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 доступным для пользователей, поэтому я не включил это. (Но это означает, что вам придется вручную создавать таблицы и определять, какие столбцы в них существуют.)

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

  • 0
    Спасибо! Это было очень полезно. Если вы не возражаете, у меня есть другой вопрос к вам, с методом c.execute, есть ли способ получить переменное количество аргументов? Я планировал иметь несколько таблиц, и некоторые из них имеют разное количество столбцов. Я знаю, что в javascript вы можете использовать объект «arguments» для извлечения и перебора переменного числа аргументов. Я хотел бы избежать создания нескольких функций для каждой таблицы, если это возможно.
  • 0
    @BlorbieRandy проверить питоны splat оператор. Узнав о decorators в Python, я многому научился в splat
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню