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
。确切的解决方案取决于您的具体用例。
我目前在 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
。确切的解决方案取决于您的具体用例。