通过SFTP连接获取SQLite数据

问题描述 投票:0回答:1

我想要在 Windows 和 Linux PC 之间建立连接。我正在使用 Paramiko(SSH 和 SFTP):

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh_client.load_system_host_keys()
ssh_client.connect(ip, 22, user, pwd)
sftp_client = ssh_client.open_sftp()

我没有收到错误,所以我认为连接有效。但我无法从远程电脑获取文件。我想获取 SQLite 数据库或其数据:

file = sftp_client.get("Data.db")

我不知道 SQLite 数据库是否不可读取或不可编辑,或者我是否只是使用了错误的语法。

python sqlite ssh sftp paramiko
1个回答
0
投票

Paramiko

SFTPClient.get
方法 接受(至少)两个参数并且不返回任何内容。

def get(self, remotepath, localpath, callback=None):

所以应该是这样的:

sftp_client.get("/remote/path/Data.db", "/local/path/Data.db");

或者如果您使用的是 Windows:

sftp_client.get("/remote/path/Data.db", "C:\\local\\path\\Data.db");

如果您实际上不想下载该文件,而是像本地文件一样使用它,请使用

SFTPClient.getfo
:

file = sftp_client.getfo("/remote/path/Data.db")

返回一个类似文件的对象,您可以在许多 Python API 中使用它。虽然我没有看到任何提及 SQLite Python API 支持类文件对象。

即使是这样,使用起来也可能很慢。如果您要修改数据库的相对较大部分,下载整个数据库、在本地进行更改并重新上传回来可能会更快。

© www.soinside.com 2019 - 2024. All rights reserved.