【问题标题】:How to access sqlite database files in remote server(ubuntu) using python script in local computer如何使用本地计算机中的python脚本访问远程服务器(ubuntu)中的sqlite数据库文件
【发布时间】:2020-05-29 23:59:41
【问题描述】:

我知道 SQLite 适用于嵌入式系统,但我正在尝试通过 API 和 SQLite 设置具有不同类型数据库(如 MySQL)的数据库系统。

问题是 SQLite 数据文件存储在 Ubuntu 服务器中,我想通过用户计算机上的 ssh 路径远程连接。

我尝试连接成功执行诸如“ifconfig”之类的通用命令的 paramiko。但是,当我执行 SQLite 命令时,它不起作用。

import paramiko

cmd = 'ifconfig'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(remote_ip, username =username, password=pw, port=port)
(stdin, stdout, stderr) = ssh.exec_command(cmd)

有没有办法直接写ssh路径连接?

示例代码如下:

import sqlite3
conn = sqlite3.connect('example.db')

【问题讨论】:

  • 您应该考虑使用使用客户端/服务器模型的不同数据库程序。
  • 我能看到的唯一方法是编写一个新的 sqlite VFS,它通过 ssh 进行访问 - 但可能有点复杂。您是如何尝试通过 paramiko 运行 sqlite 命令的?
  • 我把命令'sqlite3 sample.db'通过paramiko远程访问但是没有响应(很长时间没有输出)。不过,任何其他常见的 ubuntu 命令都可以使用。

标签: python sqlite ubuntu ssh


【解决方案1】:

我只是通过 Paramiko 将一些来自不同地方的建议组合在一起来解决这个问题。感觉有点 hacky,但我有一个基本的需要,对 Python 脚本中的几件事做一些批量检查,其中之一是检查几台服务器上的 sqlite3 db 中的值。这对我有用:

import paramiko
from paramiko import SSHClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host=hostname, username='username', password='password')
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('sqlite3 /path/to/yourdb.sqlite3 "select * from table;"')
stdout=ssh_stdout.readlines()
print(stdout)

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2011-09-17
    • 2021-03-04
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多