怎么用 Python 连接坚果云的 Webdav 上的文件?

2021-03-21 10:12:06 +08:00
 youthfire

我的想法是,把一个 sqlite 微型数据库放在坚果云上,利用 Webdav 随时读写.方便两台 Mac 随时接入且偶尔各自写入一些数据(不频繁)

目前是先用 Finder 连接地址后输入的账号密码,映射了相关盘符。用 Python 接入时 conn = sqlite3.connect(r'https://dav.jianguoyun.com/dav//我的坚果云 /xxx.db') 会提示 sqlite3.OperationalError: unable to open database file

有什么方法解决吗?还是 Webdav 不能这样用?也是第一次接触。

2308 次点击
所在节点    Python
8 条回复
pupboss
2021-03-21 10:13:56 +08:00
你都映射盘符了,用本地绝对路径最容易
如果想用 python 直接连接,你应该先去找 webdav 协议的文件操作库,再用 sqlite 连接
youthfire
2021-03-21 10:24:32 +08:00
@pupboss #1 我看 windows 一般映射都是形成一个本地盘符,然后 Python 直接访问这个盘符下文件,现在看 Mac 连接后它的路径属性就是 http 地址。其实我倒是就是想直接操作这个“绝对地址”。
zengxs
2021-03-21 10:28:20 +08:00
两个客户端同时写入不会有数据竞争的问题
Eleutherios
2021-03-21 10:31:13 +08:00
google 一下 你就知道
youthfire
2021-03-21 10:36:50 +08:00
@zengxs #3 谢谢提醒,写入不频繁,且写入时间极短,基本也没有对同表操作产生,以前都是手工拷贝一份给第二台电脑,但目前各自会产生少量自有数据所以考虑这种方式
youthfire
2021-03-21 11:01:25 +08:00
@Eleutherios 确实找了,看到的主要是例如 webdavclient3 对地址上的各种 download, makedir, clean, move, update 操作,实际上我并不想对“空间”进行操作,而只是想获取“文件地址”,以保证 Python 可以直接 access 。我不是很清楚 Webdav 是不是可以这样用。
oott123
2021-03-21 11:16:53 +08:00
如果你要直接这么连接,那需要 python 的 sqlite3 库支持连接 webdav,但它显然是不支持的,所以不可行。

最简单的办法是直接写 macOS 映射后的地址, /Volumes/xxx 这种的,让系统的 webdavfs 帮你管。
SenLief
2021-03-21 11:31:15 +08:00
不建议用坚果云 webdav,这货对于请求限制很严格,如果请求量不大还好。建议还是用 COS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX