我正在用Python为我的雇主创建一个库存系统,我应该将库存信息存储在SQLite数据库中吗?

我正在用Python为我的雇主创建一个库存系统,我应该将库存信息存储在SQLite数据库中吗?,python,sqlite,class,inventory-management,Python,Sqlite,Class,Inventory Management,我已经开始用Python为我的雇主创建一个库存系统。我的前端GUI大部分是完整的,并且对后端有疑问 我应该如何存储信息 该程序将位于一个dropbox文件夹中,可供多人同时访问。我是否应该使用SQLite数据库,在执行诸如“添加股票”之类的功能时,打开一个连接,执行更改,然后关闭连接?这是否允许多个用户同时打开库存?有没有更好的方法来处理这个问题 库存物品不会很多。使用python对象和对象方法来存储和操作信息是否更好?使用python可以非常轻松地操作sqlite数据库 您可以使用此模式构建

我已经开始用Python为我的雇主创建一个库存系统。我的前端GUI大部分是完整的,并且对后端有疑问

我应该如何存储信息

该程序将位于一个dropbox文件夹中,可供多人同时访问。我是否应该使用SQLite数据库,在执行诸如“添加股票”之类的功能时,打开一个连接,执行更改,然后关闭连接?这是否允许多个用户同时打开库存?有没有更好的方法来处理这个问题


库存物品不会很多。使用python对象和对象方法来存储和操作信息是否更好?

使用python可以非常轻松地操作sqlite数据库

您可以使用此模式构建一个漂亮的CRUDAPI,并将操作映射到GUI。从设计的角度来看,然后由您决定您愿意向用户公开哪些操作。例如,我认为您不想让用户使用
CREATE TABLE
,所以我没有包括这一点。(但这意味着您必须手动创建表并定义表中存在的列。)


您已经说过,这将是一个非常轻量级的库存系统,但不用说,在企业规模上,此解决方案是一个失败者。

如果您试图执行类似数据库的操作,您可能应该使用数据库。否则,您打算如何使用python对象来跟踪库存变化?我想,如果有一种方法可以在关闭和重新打开应用程序时保持属性变化,那么创建具有“count”、“price”等属性的对象可能会起作用,例如一个
.csv
pickle
文件,您可以使用它在会话之间持久化数据或python对象,但这实际上取决于您的用例您是否阅读了有关sqlite和多个并发访问的警告?我没有,我只是看了看,似乎这不会是一个问题,因为在同一时间有一个人以上的可能性很小(尽管存在)。即使有不止一个人,他们的更新也会很小,根据警告,完成更新也需要几毫秒。谢谢!这很有帮助。如果你不介意的话,我还有一个问题要问你,关于c.execute方法,有没有一种方法可以接受可变数量的参数?我计划有多个表,有些表有不同的列数。我知道在javascript中,您可以使用“arguments”对象来检索和迭代可变数量的参数。如果可能的话,我希望避免为每个表创建多个函数。@BlorbieRandy请查看python
splat
操作符。学习python中的
decorators
让我学到了很多关于
splat的知识
谢谢!我会的,不客气!如果回复有助于解决您的问题,您可以标记它或标记它,并回答@BlorbieRandy
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