SQLite3 Неизвестная ошибка
Я использую python3.
self.cur.execute("""INSERT or IGNORE INTO {0}(Konu, KonuAnlatımı, SoruSayısı, ToplamDogru, ToplamYanlıs) VALUES
('{1}', '{2}', '{3}','{4}', '{5}') UPDATE {0} SET (KonuAnlatımı = '{2}'),
SoruSayısı = '{6}',
TaplamDogru = '{7}',
ToplamYanlıs = '{8}'
WHERE Konu = {1}""".format(ders, konu, Çalışıldı, soru, dogru, yanlis,
str(int(soru) + int(self.cur.execute(
"Select SoruSayısı From "+ders+" WHERE Konu = '"+konu+"'").fetchone()[0])),
str(int(dogru) + int(self.cur.execute(
"Select ToplamDogru From "+ders+" WHERE Konu = '"+konu+"'").fetchone()[0])),
str(int(dogru) + int(self.cur.execute(
"Select ToplamYanlıs From "+ders+" WHERE Konu = '"+konu+"'").fetchone()[0]))))
Я получаю ошибку, которая:
"Select ToplamYanlıs From "+ders+" WHERE Konu = '"+konu+"'").fetchone()[0]))))
sqlite3.Warning: вы можете выполнять только один оператор за раз.
если я удалю ';' Я получаю это:
"Select ToplamYanlıs From "+ders+" WHERE Konu = '"+konu+"'").fetchone()[0]))))
sqlite3.OperationalError: рядом с "ОБНОВЛЕНИЕ": синтаксическая ошибка
Так что же происходит? И я не нашел название заголовка. извиняюсь...
2 ответа
Я бы предложил разбить его на более мелкие части в первую очередь для отладки и собрать его заново, когда каждая часть работает как положено.
Я взял на себя смелость заменить символы не ASCII на визуально похожие версии ASCII для этого примера.
SoruSayisi = self.cur.execute(
"SELECT SoruSayisi From {} WHERE Konu = ?".format(ders), konu
).fetchone()[0]
TaplamDogru = self.cur.execute(
"SELECT ToplamDogru From {} WHERE Konu = ?".format(konu), konu
).fetchone()[0]
ToplamYanlis = self.cur.execute(
"SELECT ToplamYanlis FROM {} WHERE Konu = ?".format(konu), konu
) .fetchone()[0]
self.cur.execute("""\
INSERT or IGNORE INTO {0}
(Konu, KonuAnlatımı, SoruSayisi, ToplamDogru, ToplamYanlis)
VALUES (?, ?, ?, ?, ?)""".format(ders),
konu,
Calisildi,
soru,
dogru,
yanlis)
self.cur.execute("""
UPDATE {0}
SET KonuAnlatımı = ?,
SoruSayisi = ?,
TaplamDogru = ?,
ToplamYanlis = ?
WHERE Konu = {1}""".format(ders),
Calisildi,
str(int(soru) + int(SoruSayisi)),
str(int(dogru) + int(TaplamDogru)),
str(int(dogru) + int(ToplamYanlis)))
Поскольку я не могу проверить это, возможно, я допустил ошибки. Это просто подход к выяснению того, что происходит.
Не используйте Python
{num}
форматирование, это не будет правильно цитировать для SQL. Использовать?
вместо заполнителя:c.executemany ("ВСТАВИТЬ В СТОИМОСТЬ акций (?,?)", (12, "виски"))
Делайте суб-выборки отдельно, проверяйте значения, а затем используйте их в более крупном операторе SQL - это проще и понятнее.