mysql.connector SELECT查询是同时还是顺序运行的?

问题描述 投票:0回答:1

我目前在python Flask项目中使用mysql.connector,在用户输入信息后,执行以下查询:

"SELECT first, last, email, {} FROM {} WHERE {} <= {} AND ispaired IS NULL".format(key, db, class_data[key], key)

如果此查询在两个线程中并发执行,并在两个线程中返回相同的行,则会出现问题。我想知道是否有办法防止SELECT mysql查询同时执行,或者这是否已经是mysql.connector的默认行为?有关其他信息,所有mysql.connector查询在使用相同的帐户凭据进行身份验证后执行。

python mysql flask mysql-python mysql-connector-python
1个回答
1
投票

很难从你的描述中说出来,但如果你正在使用Flask,你很可能正在使用(或将在生产中使用)多个进程,并且你可能在每个进程中都有一个连接池(即多个连接)。因此,当每个连接按顺序执行查询时,此查询可以同时由多个连接并发运行。

为了防止您的应用程序在处理不同请求的同时获取同一行,您应该使用SELECT FOR UPDATE等事务和技术。确切的解决方案取决于您的确切用例。

© www.soinside.com 2019 - 2024. All rights reserved.