如何解决Python脚本无法识别Mysql查询
我正在尝试使用sshpass接收查询结果,以下示例:
sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""
当我从本地计算机启动该命令时,它会起作用。
但是当我在Python脚本上执行操作时,它没有:
import subprocess
import sys
from subprocess import check_output
command = 'sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""'
output = check_output(command,shell=True)
它返回此错误:
bash: -c: línea 0: EOF inesperado mientras se buscaba un `"' coincidente
bash: -c: línea 1: error sintáctico: no se esperaba el final del fichero
/bin/sh: 1: : Permission denied
Traceback (most recent call last):
File "ipcompare.py",line 8,in <module>
output2 = check_output(command2,shell=True)
File "/usr/lib/python2.7/subprocess.py",line 223,in check_output
raise CalledProcessError(retcode,cmd,output=output)
subprocess.CalledProcessError: Command 'sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""' returned non-zero exit status 127
我尝试过:
-
在我的脚本中
- chmod 777,错误仍然相同。
- 更改单引号的双引号。
- 转义所有特殊字符。
解决方法
我这样做是为了解决问题:
import subprocess
import sys
from subprocess import check_output
command = 'sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \\\"SELECT * FROM database.ViewName;\\\""'
output = check_output(command,shell=True)
转义转义字符是此问题的答案。
,基于此行:
/bin/sh: 1: : Permission denied
您似乎没有执行该Shell命令的特权。您确定在本地运行时没有特权吗(以前使用“ sudo”运行某些命令等)?
它会将它隔离在您的位置,例如。从简单的事情开始:
command = 'sshpass -p password ssh user@ip "pwd"'
如果可行,您可以进一步尝试委托mysql查询。
还,您正在同一台计算机上运行命令和脚本吗?有时数据库只能访问有限的IP地址。检查您的数据库是否不是这种情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。