首页 > 解决方案 > 使用 sqlite 制作临时数据库

问题描述

我想创建一个临时数据库,但我不知道我是否以正确的方式进行操作我收到错误 no such table: list 但我不知道为什么 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:\python\WindowsProject\app\user\memory.py", line 42, in <module>
    print(insert('pizza',2,6))
  File "D:\python\WindowsProject\app\user\memory.py", line 17, in insert
    cur.execute(
sqlite3.OperationalError: no such table: list

标签: pythonsqlitetkinter

解决方案


sqlite3.connect(":memory:")创建一个内存数据库,该数据库仅在连接处于使用状态时才存在。

问题是您正在关闭每个函数中的数据库连接。一旦你关闭它,内存数据库就会消失。INSERT失败,因为表不再存在。

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


推荐阅读