所以这让我很困惑,标题并没有真正正确地解释它。我有一个网页,当用户从下拉列表中选择时,会对由flask 处理的 url 进行 AJAX 调用。它首先发出对 的调用/teamSelected,我的 Python 会在其中抓取有关这两支球队之间足球比赛的一些信息,将其放入相应命名的表中并返回。在此之后,第二个 AJAX 调用/requestCommentary在 python 中的位置进行,然后从表中检索此数据并返回它。问题:当我第一次调用 时/teamSelected,我有代码可以删除表(如果它存在)。之后我检查表是否存在(看起来很奇怪,但每次调用时删除表只是我确保if输入程序的一部分,以便我可以测试所有内容是否在那里工作)。之后,如果表不存在,则进入该if部分,在该部分创建表、抓取数据并将其存储在表中。如果我然后尝试打印表格的内容,它会完美地将它们吐出来,尽管告诉我只存在 1 行?但是,如果我在删除表的开头删除代码,然后尝试打印内容,它不会打印任何内容。对我来说,这毫无意义。如果表不存在,我创建它,用数据填充它,我可以访问它。但是,如果我注释掉 drop table 语句,下一次调用该表存在并且不会被删除,所以我应该能够访问它,但是那里不再有数据。如果我猜的话,几乎就好像该表只为该调用创建,然后在该调用中销毁它,因此后续调用无法访问它?/teamSelected -抓取数据,添加到数据库@app.route("/teamSelected", methods=['POST', 'GET']) def new(): try: connection = sqlite3.connect("commentary.db") cursor = connection.cursor() except: print("COULD NOT CONNECT TO DATABASE") data = request.get_data() #gets data passed via AJAX call splitData = data.decode().replace("\"", "").split("__") #data contains different elements split up by "__" homeTeam = splitData[0] awayTeam = splitData[1] tableName = homeTeam + awayTeam + splitData[2] #unique table name cursor.execute("DROP TABLE if exists "+tableName) #drops table to ensure enters if statement cursor.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='"+tableName+"';") result = cursor.fetchone() number_of_rows = result[0]回顾一下,意外行为:如果首先删除数据,然后添加数据,则仅从表中检索数据如果表已存在于先前添加数据的调用中,则新调用不检索数据Number_of_rows 插入数据后打印 1(可能与打印 5 相关)单独的路由/RequestCommentary不能访问表无论如何没有抛出异常我真的可以帮助解决这个问题,因为我完全被这里的问题难住了,并且已经解决了几个小时。经过更多测试,我确定这与正在创建的表的范围有关。我不确定如何或为什么,但我似乎只能访问我在该调用中添加到表中的数据,从以前的调用中添加的任何数据都不存在,这让我觉得表数据以某种方式是本地的调用访问它,而不是全局的?
1 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
只是设法弄清楚了。我知道这与使本地更改不被全球看到有关。环顾四周后,我意识到如果我不使用connection.commit()
来保存所做的更改,这正是我会遇到的问题。我现在已经添加了它,所做的更改现在可以被所有调用看到并且工作正常。
添加回答
举报
0/150
提交
取消