我的想法是,把一个 sqlite 微型数据库放在坚果云上,利用 Webdav 随时读写.方便两台 Mac 随时接入且偶尔各自写入一些数据(不频繁)
目前是先用 Finder 连接地址后输入的账号密码,映射了相关盘符。用 Python 接入时 conn = sqlite3.connect(r'https://dav.jianguoyun.com/dav//我的坚果云 /xxx.db') 会提示 sqlite3.OperationalError: unable to open database file
有什么方法解决吗?还是 Webdav 不能这样用?也是第一次接触。
1
pupboss 2021-03-21 10:13:56 +08:00 via iPhone
你都映射盘符了,用本地绝对路径最容易
如果想用 python 直接连接,你应该先去找 webdav 协议的文件操作库,再用 sqlite 连接 |
2
youthfire OP @pupboss #1 我看 windows 一般映射都是形成一个本地盘符,然后 Python 直接访问这个盘符下文件,现在看 Mac 连接后它的路径属性就是 http 地址。其实我倒是就是想直接操作这个“绝对地址”。
|
3
zengxs 2021-03-21 10:28:20 +08:00
两个客户端同时写入不会有数据竞争的问题
|
4
Eleutherios 2021-03-21 10:31:13 +08:00 via iPhone
google 一下 你就知道
|
5
youthfire OP @zengxs #3 谢谢提醒,写入不频繁,且写入时间极短,基本也没有对同表操作产生,以前都是手工拷贝一份给第二台电脑,但目前各自会产生少量自有数据所以考虑这种方式
|
6
youthfire OP @Eleutherios 确实找了,看到的主要是例如 webdavclient3 对地址上的各种 download, makedir, clean, move, update 操作,实际上我并不想对“空间”进行操作,而只是想获取“文件地址”,以保证 Python 可以直接 access 。我不是很清楚 Webdav 是不是可以这样用。
|
7
oott123 2021-03-21 11:16:53 +08:00 via Android 1
如果你要直接这么连接,那需要 python 的 sqlite3 库支持连接 webdav,但它显然是不支持的,所以不可行。
最简单的办法是直接写 macOS 映射后的地址, /Volumes/xxx 这种的,让系统的 webdavfs 帮你管。 |
8
SenLief 2021-03-21 11:31:15 +08:00 1
不建议用坚果云 webdav,这货对于请求限制很严格,如果请求量不大还好。建议还是用 COS
|