我写了一个代码replit和它完美的一个文件,我使用。然而,由于我想尝试对数据库做一些我不确定是否有效的事情,我想将数据库复制到另一个replit文件中,所以我试图下载它,然后重新上传到另一个数据库文件中,然后使用以下代码:
import sqlite3
import os
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
tabs = ttk.Notebook(root)
tabs.place(x=0, y=0)
tab1 = ttk.Frame(tabs)
tabs.add(tab1, text = "Workouts display")
tab2 = ttk.Frame(tabs)
tabs.add(tab2, text = "Checkboxes")
root.title("Gym")
root['background']='red'
add = 0
connection = sqlite3.connect("My database.txt")
c = connection.cursor()
dictionary = [["Leg Day",0],["Shoulder Day",1],["Arm Day",2],["Back Day",3]]
scrollbar = tk.Scrollbar(tab1)
myList = tk.Listbox(tab2, yscrollcommand=scrollbar.set)
c.execute('''
SELECT * FROM Workout
''')
root.mainloop()
尝试调用这个新的数据库,我已经上传了这个“备份”文件,这样我就可以参考,如果有什么问题,在我原来的。但是它说数据库磁盘映像格式不正确。我试了好几次,都是同样的消息:“sqlite3.DatabaseError:数据库磁盘映像格式不正确”
1条答案
按热度按时间w1jd8yoj1#
(最后的解决方法)
你看到两件事的组合,我也可以复制它:
1.您的数据库文件没有扩展名,由于某种原因,浏览器会为其添加
.txt
扩展名。这不是一个问题,虽然它不是一个真实的的文本文件,它可以工作1.如果你在replit上点击文件,你会在一个新的标签中看到它,很多红色的
NULL
-s。无论出于何种原因,查看文件都会影响您的下载方式(即使您关闭了包含此奇怪内容的选项卡)。基于tutorial创建了以下有趣的测试代码:
在原地运行它会产生所需的
[(8.2,), (7.5,)]
输出,并创建数据库文件tutorial
。现在不要点击文件名,而是点击它旁边的垂直
...
,然后选择下载。结果,您将得到一个8192字节长的tutorial.txt
。您可以连接到它,并在本地运行相同的代码,修改文件名并删除CREATE
/INSERT
/commit()
行:仍然生成
[(8.2,), (7.5,)]
。现在点击文件名
tutorial
,看到很多红色的NULL-s:x1c 0d1x当您看到此消息时,数据库无法正确下载。如果您现在点击下载,您将得到一个8206字节长的非工作tutorial.txt
,然后在connect()
调用时死亡。文件变长了,但不会太长,这可能意味着换行符被转换为2字节的回车符+换行符序列,@tadman在评论中猜测。但是这是一个UI错误,replit会将销毁的文件保存在客户端,并提供给您下载。但是服务器上的原始文件仍然有效,您只需删除浏览器中的文件即可:
1.确保带有奇怪视图的数据库文件没有打开(在replit窗口/选项卡内)
1.重新加载replit窗口/选项卡(Ctrl+F5或类似的操作)
1.直接通过
...
菜单下载数据库文件,小心避免实际查看文件。