for toolx in tools:
print toolx
output_count = """SELECT count(tool),count(""SELECT count(tool) FROM
core_data WHERE sentiment = 'positive' AND tool = '%s'"")
from core_data where tool = '%s'""" % (toolx, toolx)
Я не знаю, как сравнивать строки со строками при запуске нескольких запросов sql в запросе.
У вас есть пара проблем с вашим кодом.
Во-первых, вы должны использовать держатели мест для параметров и параметры передачи как кортеж для cursor
при выполнении SQL-запроса. Таким образом, MySQL будет в некоторой степени защищать вас от SQL-инъекций.
Пример:
cursor.execute("SELECT * FROM core_data WHERE sentiment = 'positive' AND tool = %s", (toolx,))
Второй вопрос - когда вы делаете подсчет всех положительных настроений. Вам будет намного лучше:
SELECT count(*) as 'All count',
sum(case when sentiment = 'positive' then 1 else 0 end) as 'Positive Sentiments'
FROM core_data
WHERE tool = %s
Чтобы обернуть, вот как это должно выглядеть:
for toolx in tools:
print toolx
query = "SELECT count(*) as 'All count', sum(case when sentiment = 'positive' then 1 else 0 end) as 'Positive Sentiments' FROM core_data WHERE tool = %s"
results = cursor.execute(query, (toolx,))
# and then you do the fetchone and take counts