使用SQLite3并收到此错误:
sqlite3.OperationalError:没有这样的柱:年
SQLite3新手在这里。 现在真的很困惑,代码的哪一部分出了问题......
import sqlite3
def connect():
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer)")
conn.commit()
conn.close()
def search(title="",author="",year="",isbn=""):
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("SELECT * FROM book WHERE title=? OR author=? OR year=? OR isbn=?",(title,author,year,isbn))
rows=cur.fetchall()
conn.close()
return rows
connect()
print(search(year=1918))
任何帮助都将不胜感激,谢谢!
答案 0 :(得分:0)
一种可能性是不存在这样的列(消息是正确的),因为您已经在代码的早期版本中创建了表,该代码没有该列,因此CREATE TABLE IF NOT EXISTS
将以静默方式返回。
您可以通过检查交互式.schema
中的sqlite3
来手动执行此操作。
和/或您可以通过检查表格结构来覆盖代码中的可能性。
SELECT * FROM sqlite_master;
如果不正确,可以使用ALTER TABLE book ADD COLUMN ...
- 如果要重命名列,则会更复杂:SQLite Query Language: ALTER TABLE
答案 1 :(得分:0)
确保您拥有该列。
列出表格book
的所有列:
sqlite3 books.db
之后:
.schema book
如果您没有名称为year
的列,则可以通过更改表格来添加它,或者您可以删除旧表格并再次创建。