Python Sqlite操作错误:IF不存在的语法

Python Sqlite操作错误:IF不存在的语法,python,sql,sqlite,python-2.7,Python,Sql,Sqlite,Python 2.7,我收到此代码的sql lite操作语法错误: def checkIn(uname, title): bookid = findBookID(title) #returns an int bookid given the title print bookid with libDB: checkCur = libDB.cursor() checkCur.execute( "IF NOT EXISTS(SELECT 1 FROM Checks

我收到此代码的sql lite操作语法错误:

def checkIn(uname, title):
   bookid = findBookID(title) #returns an int bookid given the title
   print bookid
   with libDB:
      checkCur = libDB.cursor()
      checkCur.execute(
         "IF NOT EXISTS(SELECT 1 FROM Checks WHERE Username =? AND bookID =?) INSERT INTO Checks VALUES(?,?)",
         (uname, bookid, uname, bookid))
      checkCur.close()
      mess = "OK::CHKIN::", uname, "::", title
      return mess 
错误是:

  sqlite3.OperationalError: near "IF": syntax error
我是这样定义表的:

   with libDB:
     checkCur = libDB.cursor()
     checkCur.execute(
         "CREATE TABLE Checks(bookID INTEGER, Username TEXT, FOREIGN KEY(bookID) REFERENCES Books(bookID),FOREIGN KEY(Username) REFERENCES Users(Username))")
     checkCur.close()
如果我错过了一些简单的事情,我表示歉意。我查看了代码好几次,并在网上搜索,我没有看到语法错误在哪里。我将我的查询与我在网上找到的查询进行了比较,结果似乎相符。我能想到的唯一可能是错误的是,如果我的参数不正确,但我试图改变它们,但我仍然无法让它工作

提前感谢您的帮助


-CJ如果不存在,则与sqlite不兼容。所需的insert语句如下所示:

INSERT INTO Checks (bookID, Username)
  SELECT 7, 'Bob'  /* for example */
    WHERE NOT EXISTS (SELECT 1 FROM Checks WHERE bookID = 7 and Username = 'Bob');
请注意,
不存在
WHERE
子句中。这类insert语句非常有用。你可以玩这个游戏

因此,在Python函数中,尝试以下操作:

insert_stmt = ("INSERT INTO Checks (bookID, Username) "  # note the space at end of string
                  "SELECT ?, ? "
                  "WHERE NOT EXISTS (SELECT 1 FROM Checks WHERE bookID = ? and Username = ?)")
checkCur.execute(insert_stmt, (bookid, uname) * 2)  # no need to repeat the bookid, uname combo twice; just multiply the tuple by 2

这看起来可能会有帮助:我很想帮忙,但我对数据库一无所知。@Codypersall谢谢你的帮助,但没用。即使在您的链接中实现了代码,我仍然会遇到语法错误。抱歉@cjuf,但我对Sqlite或任何其他数据库系统一无所知。希望有人能来帮忙。