【发布时间】:2021-03-29 10:26:47
【问题描述】:
我正在尝试用 python 做一个自动售货机程序。 在客户端,我有 GUI 和交易、支付等。 在服务器端,我已将文件链接到包含产品数量等的 SQL。
当客户购买产品时,我确实设法进行了一些修改。 我不知道该怎么做,我该如何告诉我的服务器: “每次收到交易,检查并更新我的数据库” 你能指导我怎么做吗?或者我可以用其他方式吗?
为了发送和接收数据,我使用套接字模块并在发送列表列表时使用 pickle。 我有 9 个产品,每个产品都包含一个我必须更新的 ID、名称、价格和数量: 例如:
#recieve
updatestock = socket_client.recv(1024)
updatestock2 = pickle.loads(updatestock)
#send
server_message = pickle.dumps(stocklist)
socket_client.sendall(server_message)
#What i send
stocklist = [
['P001','ChocolateBar',35,15],
['...','...',..,..],
[etc]].
我希望你能帮助我,因为它真的很长。谢谢!
这是我的尝试:
while(True):
if socket_client.recv(1024):
updatestock = socket_client.recv(1024)
updatestock2 = pickle.loads(updatestock)
print(updatestock2)
if updatestock2 == "Quit":
break
else:
update()
mydb.close()
socket_client.close()
如您所见,打印收到的消息 updatestock2 并没有给我任何东西,所以我认为这是问题所在
【问题讨论】:
-
在代码的接收事务部分,你检查并更新了DB?这个想法有什么问题?
-
这个想法很好,但我不知道如何制作一种 While 无限循环,每次我有查询时都会更新数据库
-
你不知道怎么做一个无限的while循环?
-
我知道,但是当从客户端发送某些内容时,我不知道如何读取数据。请为我的尝试更新我的问题检查。
-
您是否认为第一次调用 recv(1024) 会收到消息,然后第二次调用 recv(1024) 会等待另一条消息?