mysql.connector SELECT 查询 运行 是并发的还是顺序的?

Are mysql.connector SELECT queries run concurrently or sequentially?

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

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

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

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

为防止您的应用程序在处理不同请求时同时获取同一行,您应该使用 t运行 操作和技术,如 SELECT FOR UPDATE。确切的解决方案取决于您的具体用例。