用sqlite创建临时数据库



我想做一个临时数据库,但我不知道我在正确的方式或不我得到错误没有这样的表:列表,但我不知道为什么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失败,因为表不再存在。

您需要保留(或传递)conncur对象,以便您可以在函数之间使用它们。

相关内容

最新更新