#sql #python-3.x #loops #sqlite
#sql #python-3.x #циклы #sqlite
Вопрос:
вот код для создания базы данных с таблицей:
import sqlite3
con = sqlite3.connect('testcountry.db3')
cur = con.cursor()
cur.execute('create table if not exists my_table(city varchar, country varchar, status varchar);')
cur.execute('insert into my_table (city, country, status) values ("New York", "USA", null);')
cur.execute('insert into my_table (city, country, status) values ("Los Angeles", "USA", null);')
cur.execute('insert into my_table (city, country, status) values ("Houston", "USA", null);')
cur.execute('insert into my_table (city, country, status) values ("Dallas", "USA", null);')
cur.execute('insert into my_table (city, country, status) values ("Miami", "USA", null);')
cur.execute('insert into my_table (city, country, status) values ("Toronto", "Canada", null);')
cur.execute('insert into my_table (city, country, status) values ("Montreal", "Canada", null);')
con.commit()
con.close()
Вот код, который я пытаюсь выполнить:
import sqlite3
list_of_countries = ['USA', 'Canada']
con = sqlite3.connect('testcountry.db3')
con.row_factory = lambda cursor, row: row[0]
cur = con.cursor()
percentage = [cur.execute('select round(count(status) * 100 / count(country), 5) from my_table where country is ?;', (x,)).fetchone() for x in list_of_countries]
print(percentage)
for i,v in enumerate(list_of_countries):
while percentage[i] < 100:
print(percentage)
a = cur.execute('select city from my_table where country is ? and status is null;', (v,)).fetchone()
b = cur.execute('update my_table set status = "P" where city is ?;', (a,))
b
con.commit()
con.close()
Идея очень проста:
- Возьмите имя из списка(list_of_countries)
- подсчитайте, сколько стран имеют ненулевое значение в статусе (получите процент для каждой страны)
- Обновить статус по порядку в list_of_countries. Один за другим.
Проблема, с которой я сталкиваюсь: когда я запускаю свой скрипт, он начинает цикл и не останавливается. Однако в данном случае он обновляет статус для первого значения в list_of_countries: USA .
Есть идеи, почему?
Комментарии:
1.
percentage[i]
это просто копия значения базы данных.2. хм, да, я тоже думал об этом. Спасибо. У вас есть какие-либо идеи, как правильно его зациклить? для меня важно, чтобы порядок из списка был правильным.