2015-05-08 44 views
2

因此,我使用的是Python MySQL连接器,我试图编写一些代码来选择一些行,具体取决于行是否符合我给出的条件它。这个表有化学品的列和县在加利福尼亚州一列(其中包括)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不起作用时,我在循环中的计数器就会在中间冻结并停止执行任何操作。对于第三和第五条语句,循环最终会退出并在循环之后开始打印出来。任何人都可以帮助我确定什么可能是错误的或不同的方式来调试我的代码?我感谢帮助!

+0

您可能需要在'cursor.execute(query)'行之后添加类似'results = cursor.fetchall()'的东西。 – 101

+0

不幸的是,同样的事情发生。冻结相同的陈述。 –

+0

_And_在没有的情况下,改变你的循环来遍历'results',而不是'cursor'。 – 101

回答

0

尝试在查询中使用斜杠。

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 

告诉我,如果它工作。

+0

这也没有工作。它停止在完全相同的值=( –

+0

@Sidd是否在for循环中打印任何内容以进行第一个查询?哪个循环​​停止了? –

+0

它在423停止(它打印0,1,2,3,4,5 .....),而在控制台中运行命令会得到1439个结果 –