我目前在python项目中使用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查询都是在使用相同帐户凭据进行身份验证后执行的。
发布于 2018-09-16 21:48:56
很难从您的描述中判断,但是如果您使用的是Flask,您很可能使用(或将在生产中使用)多个进程,并且您可能在每个进程中都有一个连接池(即多个连接)。因此,当每个连接按顺序执行查询时,这个查询可以由多个连接同时并发运行。
为了防止应用程序在处理不同请求时同时获得同一行,您应该使用事务和技术(如SELECT FOR UPDATE )。确切的解决方案取决于您的确切用例。
https://stackoverflow.com/questions/52357407
复制相似问题