我有一个使用mysql数据库的flask restful项目,我目前正在使用pymysql连接到数据库,我以前尝试过使用flask mysqldb和flask mysql,但它们没有真正起作用,因为我需要在请求方法之外使用db连接(主要用于装饰程序),因此,我开始使用pymysql,但现在我发现并发性存在问题,每当我尝试同时发出两个以上的并发请求(这意味着两个并发查询)时,就会出现以下错误:
mysqldb._exceptions.programmingerror: (2014, "commands out of sync; you can't run this command now")
我确实打过电话 cursor.nextset
在每次查询之后,确保结果被完全使用,并且我确实确保我所有的查询和存储过程都是正确的,没有任何问题,我开始认为这个问题是由于服务器只使用了一个游标造成的,因为游标是在一个单独的模块中定义的,所有视图/资源都导入它来工作(它们不会创建新的游标),但是在我让每个视图/资源方法创建一个新的游标来工作并在之后关闭它之后,我仍然得到了相同的结果错误。这是我执行查询的方式:
cursor.callproc('do_something', (arg1, arg2))
result = cursor.fetch_all()
cursor.nextset()
这也与竞争条件无关,因为查询不会写入任何内容。我试着和服务员一起递交申请表,但我还是遇到了问题。
1条答案
按热度按时间wh6knrhe1#
而对于mysqldb存储过程
这里您必须为所有输出参数添加一个变量
对于pymyslq,您需要做更多的更改,因为没有callproc
对于mysq.connector,您必须在手动之前调用'store_result'