所以这让我很困惑,标题并没有真正正确地解释它。我有一个网页,当用户从下拉列表中选择时,会对由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
不能访问表无论如何
没有抛出异常
我真的可以帮助解决这个问题,因为我完全被这里的问题难住了,并且已经解决了几个小时。
经过更多测试,我确定这与正在创建的表的范围有关。我不确定如何或为什么,但我似乎只能访问我在该调用中添加到表中的数据,从以前的调用中添加的任何数据都不存在,这让我觉得表数据以某种方式是本地的调用访问它,而不是全局的?
慕娘9325324
相关分类