python 要在远程服务器上运行 SQLite 查询
要在远程服务器上运行 SQLite 查询,你可以使用 `paramiko` 库通过 SSH 连接远程服务器并执行 SQLite 命令。下面是一个完整的 Python 示例,演示如何通过 SSH 连接到 `192.168.21.21` 机器上的 SQLite 数据库,查询 `userInfo` 表中 `userId` 小于 100 的所有用户信息。
### Python 代码示例
```python
import paramiko
# 设置远程服务器的连接信息
hostname = '192.168.21.21'
port = 22
username = 'admin'
password = 'admin123'
# SQLite 数据库和查询
remote_db_path = '/usr/data/db/main.db'
query = "SELECT * FROM userInfo WHERE userId < 100;"
# SQLite 命令
command = f"sqlite3 {remote_db_path} \"{query}\""
# 创建SSH客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
# 连接到远程服务器
ssh.connect(hostname, port, username, password)
# 执行 SQL 查询
stdin, stdout, stderr = ssh.exec_command(command)
# 读取并打印查询结果
result = stdout.read().decode()
error = stderr.read().decode()
if result:
print("查询结果:")
print(result)
if error:
print("错误信息:")
print(error)
finally:
# 关闭连接
ssh.close()
```
### 代码说明:
- `hostname`, `username`, 和 `password` 是远程服务器的 SSH 连接凭据。
- `remote_db_path` 是远程 SQLite 数据库的文件路径。
- `query` 是你要执行的 SQL 查询。
- `command` 将 SQLite 的 `SELECT` 语句封装成命令行形式,通过 SSH 在远程服务器上执行。
- 结果会通过 `stdout.read()` 读取并打印到控制台,任何错误信息会通过 `stderr.read()` 获取。
### 运行结果:
- 查询成功时,你会看到 `userId` 小于 100 的所有用户信息。
- 如果有任何错误,会显示在 `error` 输出中。
确保你有权限访问远程机器并读取 SQLite 数据库文件!