我想做一个临时数据库,但我不知道我在正确的方式或不我得到错误没有这样的表:列表,但我不知道为什么python提出这个错误这是我的代码:
def connect():
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute(
"CREATE TABLE IF NOT EXISTS list (id INTEGER PRIMARY KEY , namee VARCHAR , number INTEGER ,"
" price INTEGER )"
)
conn.commit()
conn.close()
def insert(name, number, price):
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute(
"INSERT INTO list VALUES (NULL ,?,?,?,?,?)", (name, number, price)
)
conn.commit()
conn.close()
def view():
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute(
"SELECT * FROM list"
)
rows = cur.fetchall()
conn.close()
return rows
def delete(id):
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute("DELETE FROM list WHERE id=?", (id,))
conn.commit()
conn.close()
connect()
,这是我的错误:
Traceback (most recent call last):
File "D:pythonWindowsProjectappusermemory.py", line 42, in <module>
print(insert('pizza',2,6))
File "D:pythonWindowsProjectappusermemory.py", line 17, in insert
cur.execute(
sqlite3.OperationalError: no such table: list
sqlite3.connect(":memory:")
创建一个内存数据库,该数据库只在连接使用时存在。
问题是您在每个函数中都关闭了数据库连接。一旦关闭它,内存中的数据库就会消失。INSERT
失败,因为表不再存在。
您需要保留(或传递)conn
和cur
对象,以便您可以在函数之间使用它们。