我想要在 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 数据库是否不可读取或不可编辑,或者我是否只是使用了错误的语法。
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 支持类文件对象。
即使是这样,使用起来也可能很慢。如果您要修改数据库的相对较大部分,下载整个数据库、在本地进行更改并重新上传回来可能会更快。