Python/MySQL连接器:一些查询基于输入挂起

Python/MySQL连接器:一些查询基于输入挂起,python,mysql,mysql-connector-python,Python,Mysql,Mysql Connector Python,因此,我正在使用Python MySQL连接器,并试图编写一些代码,根据行是否符合我给出的标准来选择一些行。此表有一列化学品和一列加利福尼亚州的县(除其他外) 以下所有代码都可以通过MySQL控制台完美运行: SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county='YOLO') AND (ch

因此,我正在使用Python MySQL连接器,并试图编写一些代码,根据行是否符合我给出的标准来选择一些行。此表有一列化学品和一列加利福尼亚州的县(除其他外)

以下所有代码都可以通过MySQL控制台完美运行:

SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county='YOLO') AND (chemical='CR6')

SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (chemical='CR6')

SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (chemical='CR')

SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county='YOLO') AND (chemical='CR')

SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county='YOLO') AND (chemical='NO3')
对于上面的每一条语句,我都将该语句放在引号中,并通过python执行它。然后我试着运行一个简单的脚本。比如说

query = "SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county='YOLO') AND (chemical='CR')"
cursor.execute(query)
i = 0
for (wellName,approximateLatitude,approximateLongitude,chemical,result,units,date,county) in cursor:
     print i
     i = i+1

你们能猜出Python脚本在上面5条语句中使用了哪一条吗?只有第三个和第五个…这对我来说毫无意义,因为它们几乎是相同的东西。我改变了化学物质,它们都在MySQL命令行上完美工作。更具体地说,当我说命令在Python上不起作用时,循环中的计数器就在中间冻结,停止做任何事情。对于第三条和第五条语句,循环最终退出,并在循环结束后开始打印内容。有人能帮我确定哪些可能是错误的,或者我调试代码的不同方式吗?我感谢你的帮助

尝试在查询中使用斜杠

query = "SELECT wellName, approximateLatitude, approximateLongitude, chemical, result, units, date, county FROM chemicaldata WHERE (county=\'YOLO\') AND (chemical=\'CR\')"
cursor.execute(query)
i = 0
for (wellName,approximateLatitude,approximateLongitude,chemical,result,units,date,county) in cursor:
     print i
     i = i+1

告诉我它是否有效。

您可能需要在
cursor.execute(query)
行之后添加类似
results=cursor.fetchall()
的内容。不幸的是,同样的情况也会发生。冻结在相同的语句上。并将循环更改为通过
结果
,而不是
光标
,以防您没有这样做。@figs也尝试过。问题是程序在到达循环之前就冻结了。当我抓取时它会冻结,这也不起作用。它也在完全相同的值处停止=(@Sidd是否为第一次查询打印for循环中的任何内容?它停止了哪个循环?它在423处停止(它打印0,1,2,3,4,5…),同时在控制台中运行该命令会产生1439个结果。@Sidd此记录似乎有问题(423)。这就是为什么在执行fetchall时它会冻结。请检查此项。我检查了此索引处的行,似乎没有问题。此外,使用相同的逻辑,第四个查询失败,因此第三个查询也应该失败,但第三个查询似乎工作正常。顺便说一句,我非常感谢您的帮助!