[МОЙ ОТВЕТ]
Итак, первая проблема, с которой я столкнулся, заключалась в том, что я добавлял еще одну строку в оператор SELECT через edu_score (education), которая возвращала только строку, найденную в БД.Другая проблема заключалась в том, что он не суммировал только необходимые строки, в зависимости от самого высокого уровня образования пользователя.
Ответ был таким: сегментируйте строку SELECT и не используйте SUM, так как это столбец суммирования, а не строки.Вам просто нужно создать строку, которая охватывает все данные, которые вы хотите добавить, например: SELECT (A + B + C) ИЗ таблицы WHERE?, [City,].
phrase = ''
Я сделал эту переменную, потому что внутри функции она будет возвращать 'None'
def city_result(base):
global phrase
edu_lvl = ['No_certificate', 'high_school_diploma', 'Apprenticeship', 'CEGEP', 'Bachelor', 'Master', 'Doctorate']
for i in edu_lvl[edu_lvl.index(base):: -1] :
if edu_lvl.index(i) == 0:
phrase = phrase + i
else:
phrase = i + " + " + phrase
city_result - это то, что будет помещено в инструкцию SELECT для подсчета
def edu_score(education, fos, province, city):
global phrase
score = 0
city_result(education)
crsr.execute("SELECT (" + phrase + ") FROM ? WHERE cities = ?", [province, city,])
score = crsr.fetchone()
score = score / (100 - score)
Единственное, что нужно помнить, это то, что SUM предназначен для столбца, поэтому, если вы просто хотите получить определенную строку, просто поместите данные, которые вы хотите добавить, в оператор SELECT, и будьте осторожны с помещением строки в строку SELECT (потому что этовозвращает ту же строку).