python - 使用 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
解决方案
sqlite3.connect(":memory:")
创建一个内存数据库,该数据库仅在连接处于使用状态时才存在。
问题是您正在关闭每个函数中的数据库连接。一旦你关闭它,内存数据库就会消失。INSERT
失败,因为表不再存在。
您需要保留(或传递)conn
andcur
对象,以便您可以在函数之间使用它们。
推荐阅读
- r - 为什么 geom_bar y 轴与实际数字不成比例?
- android - android putExtra 显示为空
- spring - 圆形视图路径 [login]:将再次分派回当前处理程序 URL [/login]
- ios - 如何在 swift 4 中检测 UIview 失去焦点或获得焦点?
- yaml - 在同一 yaml 文件中访问 yaml 映射中的项目
- excel - 使用 vba 检查列在 excel 中是否可见
- ios - 如何在 Xcode for iOS 中启用 ASLR
- javascript - 为什么 http 响应没有显示在 chrome 调试的网络选项卡中?
- angular - Ionic 创建 PWA:CLI 中的模式验证失败
- sql - 可以使用多个参数从 PowerShell 运行 SQL 文件