我目前有一个餐厅模拟程序,Tkinter的GUI,我正在寻找一种方法,允许多个实例化程序在更新其关键变量的意义上相互交互。 (抱歉我的英语不好)
让我们说:
Order
,See Inventory
和See Sales
现在,餐厅必须跟踪订单,以及烹饪食物的库存。
我尝试使用txt
文件导入和导出对程序进行编码以跟踪数据,但刚才我意识到txt
文件可以由程序ONE at the TIME编辑。 (无法一次编辑单个txt
文件)
问:保存程序中使用的变量值的更好方法是什么,以便多个用户可以使用具有实时更新变量值的程序?
Global
变量。但是我怎么可能为它们分配值并让它们更新? (每次程序运行时都会初始化局部变量)感谢您阅读我的问题!
答案 0 :(得分:0)
您可以使用sqlite3
模块创建轻量级数据库。这不需要服务器程序;数据库管理器位于Python标准库中。多个实例将读/写同一个文件数据库,sqlite将负责确保一致性。
但请注意,有一个5-second global lock on most sqlite implementations,因此您的多个实例必须在少于该时间内完成其读/写操作,否则会导致“数据库锁定”其他情况下的例外。
这里有一个例子:
import sqlite3 as lite
import time
con = lite.connect('common.db')
cur = con.cursor()
cur.execute(
"CREATE TABLE IF NOT EXISTS restaurant (orderId INT primary key, inventory TEXT, sales INT);")
for i in range(5):
print "About to insert on ID: %s" % i
cur.execute("INSERT INTO restaurant VALUES(%d, 'burger', 1)" % i)
time.sleep(1)
con.close()
如果您同时在两个终端上执行此代码,您会注意到: