gpt4 book ai didi

python - Flask应用程序中如何向不同用户显示不同的数据?

转载 作者:行者123 更新时间:2023-11-29 15:23:09 25 4
gpt4 key购买 nike

我创建了一个 Flask 应用程序并使用 mysql 作为数据库后端,并且由多个用户同时使用。

我遇到的问题是,在我的主页中执行选择查询并向用户显示数据,但向所有用户显示相同的数据。它应该是唯一的。我尝试在选择行时使用 FOR UPDATE 来锁定该行。我知道我没有更新该行,因此当函数结束时事务将关闭,并且该行将从锁定中释放。

如何解决这个问题?

预期输出:每个用户应该从表中获取不同的数据。(即使他们刷新)

@is_logged_in
@app.route('/')
def index():
conn = mysql.connection
cur = conn.cursor()
cur.execute("select mylist ,myurl ,swatch,parent from image_links where status =%s LIMIT 1 FOR UPDATE",("fetched",))
parent = cur.fetchall()
for row in parent:
mylistitems = row[0].split(",")
swatches = row[2].split(",")
myurlsitems = row[1].split(",")
pid = row[3]
if asinlist != ['']:
merged = tuple(zip(mylistitems ,myurlsitems ,swatches))
return render_template('home.html',firstimage= myurlsitems[0],merged=merged)
else:
cur.execute("UPDATE asin_links SET status = %s WHERE pid= %s", ("invalid",pid,))
conn.commit()
return redirect(url_for('index'))

最佳答案

我看不到 sql 查询中使用的任何“当前用户”特定参数,也看不到根据某些用户 ID 决定的任何数据过滤。基本上,如果您对此端点上的所有请求运行相同的代码、相同的查询,那么它永远不会真正唯一。您需要添加一些特定于用户的检查,以便可以区分当前请求用户的输出。

根据您的用例和数据库模型,如果表 image_links 中的数据也是由某些用户操作创建/插入的,您可能需要在这些值旁边另外保存一些用户 ID,例如。通过使用另一个“user_id”列扩展表模型,并在插入时添加当前用户的 id。

您正在使用一些身份验证装饰器@is_logged_in,如果您已经在某个表中处理用户,那么另一个user_id列可能是对相应用户主键的引用。然后,在您的示例中,您只需添加额外的 where user_id = 检查当前用户的主键。

关于python - Flask应用程序中如何向不同用户显示不同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59230279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com