_mysql_exceptions.ProgrammingError 1064, "У вас есть ошибка в синтаксисе SQL; проверьте

0
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 в запросе.

  • 0
    Пожалуйста, исправьте отступ.
Теги:
database
python-3.x
python-2.7

1 ответ

0

У вас есть пара проблем с вашим кодом.

Во-первых, вы должны использовать держатели мест для параметров и параметры передачи как кортеж для 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню