Останавливается цикл при записи в базу данных
Я пишу программу на питоне что-то в духе "калькулятора" для игры (EVE Online). Задача самой программы заключается в том что-бы рассчитать выгодную руду для каждого минерала. Суть проблемы такова что когда код входит в первый цикл for он затягивает с БД таблицы Required значения и записывает в переменные а потом заходит во второй цикл for, и там он сравнивает значения для расчета и записи в другую БД таблици Calculated но цикл выполняет 1 итерацию и прекращает что либо делать дальше. Сама программа не зависает можно еще раз что-то "рассчитать". Прошу помощи в решении данной проблемы или примеры других вариантов.
class Foo:
def f():
required = {}
index = []
for i in sql.execute("SELECT * FROM Required"):
required[i[0]] = i[1]
index.append(i[0])
for i in sql.execute("SELECT * FROM minerals_in_ore"):
for key in required:
if key == i[1]:
result = (required[key] * 100) / (i[2] * (efficiency / 100))
print(i[0], i[1], math.ceil(result))
sql.execute(f"INSERT INTO Calculated (Ore, Minerals, Count) VALUES (?, ?, ?)", (i[0], i[1], math.ceil(result))) # обрывается цикл
db.commit()
app = QtWidgets.QApplication([])
application = eve_calore()
application.show()
sys.exit(app.exec())
P.S. я не много имею опыта в питоне и базе данных. И я прекрастно понимаю что моя "проблемма" может быть очевидной и по-этому попрошу не судить строго.
Ответы (1 шт):
Переменная sql это курсор, отдав новую команду в sql.execute(f"INSERT Вы обрываете курсор sql.execute("SELECT
Или соханите все данные из SELECT во временный массив или создайте новый курсор для INSERT.