Есть ли способ сделать для l oop, l oop через различные значения для поиска в запросе sqlite3 - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть функция, которая получает все данные для директора каждый год, но я должен создать новую функцию для каждого года, чтобы изменить year_granted на следующий или предыдущий год. Есть ли способ, которым я могу сделать al oop, который просто использует одну функцию и меняет year_granted на следующий год.

def getDirectorsInfo2019(self):
   c.execute('SELECT first_name, last_name, year_granted, app_units_granted, 
   full_value_units_granted 
   FROM Directors INNER JOIN DirectorsUnits ON DirectorsUnits.id_number_unit = 
   Directors.id_number_dir 
   WHERE id_number_dir BETWEEN 1 AND 50 AND year_granted=2019')
   datas = c.fetchall()
   for people in data:
       people = [datas[0]]
   for people2 in [datas[0]]:
       peopl02 = list(pepl2)
   self.firstNAme = people2[0]
   self.year2019 = people2[2]
   self.lastNAme = people2[1]   
   self.aUnits2019 = people2[3]
   self.fUnits2019 = people2[4]

1 Ответ

0 голосов
/ 06 апреля 2020

Да, это довольно просто. Основная идея c состоит в том, чтобы l oop через диапазон и заполнить запрос sql, используя метод DB-API «подстановка параметров». Это выглядит так:

query = """
SELECT first_name, last_name, year_granted, app_units_granted, full_value_units_granted FROM Directors 
INNER JOIN DirectorsUnits ON DirectorsUnits.id_number_unit = Directors.id_number_dir 
WHERE id_number_dir BETWEEN 1 AND 50 AND year_granted=?
"""
# I used a triple-quote string here so that the line breaks are ignored
# Note that this loop would fetch data for 1998, 1999, 2000, and 2001, but not 2002
for year in range(1998, 2002):
    # Parameter substitution takes a list or tuple of values, so the value must be in a list even though there's only one
    rows = c.execute(query, [str(year),]).fetchall()
    for row in rows:
       #strictly speaking, you don't need these variable assignments, but it helps to show what's going on
       first_name = row[0]
       last_name = row[1]
       year = row[3]
       a_units = row[4]
       f_units = row[5]
       # do stuff with row data here, append to a list, etc. 

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...