通过SFTP连接获取SQLite数据

mepcadol  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(173)

我想在Windows和Linux PC之间建立连接。我正在使用Paramiko(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()

我没有得到一个错误,所以我认为连接工作。但我无法从远程PC获取文件。我想获取SQLite数据库或其数据:

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

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

v9tzhpje

v9tzhpje1#

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支持文件类对象。
即使它这样做,使用起来也会很慢。如果您要修改数据库的相对较大的部分,下载整个数据库,在本地进行更改并重新上载可能会更快。

相关问题