SQLite3未知E

2024-03-28 15:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是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]))))

我得到一个错误是:

^{pr2}$

警告:一次只能执行一个语句。在

如果我删除';'我会得到:

^{pr2}$

sqlite3.OperationalError:靠近“UPDATE”:语法错误

发生了什么事?我还没找到书名。对不起的。。。在


Tags: fromselfexecutewhereselectintcurstr
2条回答
  1. 不要使用Python{num}格式,它不会正确引用SQL。请改用?占位符:

    c.executemany('插入股票价值(?)?,?)',(12,“威士忌”)

  2. 分别执行sub select,验证值,然后在更大的SQL语句中使用它们,这样更清晰、更简单。

https://docs.python.org/3/library/sqlite3.html

我建议先把它分解成更小的部分,以便调试,当每个部分都按预期工作时再重新构建它。在

在这个例子中,我已经冒昧地将非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)))

因为我不能测试这个,我可能犯了错误。这只是一种了解情况的方法。在

相关问题 更多 >