Python 断言mysql是本地安装的

Python 断言mysql是本地安装的,python,mysql,python-3.x,Python,Mysql,Python 3.x,我想确保用户安装了mysql以便运行脚本。通常我会在shell中输入$mysql,如果它出现mysql>提示,我知道我很好。但是,如何在python脚本中实现这一点?比如: try: assert (0 == subprocess.call("mysql -u root -e 'show databases'", shell=True, stderr=subprocess.DEVNULL)) except AssertionError: print ("You need to i

我想确保用户安装了mysql以便运行脚本。通常我会在shell中输入
$mysql
,如果它出现
mysql>
提示,我知道我很好。但是,如何在python脚本中实现这一点?比如:

try:
    assert (0 == subprocess.call("mysql -u root -e 'show databases'", shell=True, stderr=subprocess.DEVNULL))
except AssertionError:
    print ("You need to install mysql to run this script")\
正确的方法是什么?

您可以使用。这在Python3.3+中可用,并且将使用与正在运行的操作系统相同的路径查找

从shutil导入
def mysql_exists():
"""
验证MySQL客户端是否可用。如果存在,则返回true,
如果没有,则为假。
"""
返回的('mysql')不是None

您(首先)检查的是客户端,而不是服务器。它真的需要在本地安装吗?你真的需要客户端,还是只需要一个服务器来连接?如果是后者,您可以尝试连接到它,如果失败则显示错误。@hdiogenes我需要将数据库从远程计算机复制到本地,因此我需要在本地安装数据库。这是否回答了您的问题?此外,您还可以使用
子流程。检查调用
,这样您就不必
断言
@MattClark是的,我想是的,尽管我认为提供的答案比另一页给出的任何答案都好,至少对于python3。@MattClark,我想是的。看起来你的评论是在我写回复时发布的。我为重复的信息道歉。编辑:看起来我回复的评论不再可见。