【问题标题】:Assert that mysql is installed locally断言本地安装了mysql
【发布时间】:2020-02-28 21:13:51
【问题描述】:

我想确保用户安装了 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")\

这样做的正确方法是什么?

【问题讨论】:

  • 您(首先)检查的是客户端,而不是服务器。它真的需要在本地安装吗?你真的需要客户端,还是只需要一个服务器来连接?如果是后者,你可以尝试连接它,如果失败则显示错误。
  • @hdiogenes 我需要将数据库从远程机器复制到本地,所以我需要在本地安装数据库。
  • 这能回答你的问题吗? Check if a program exists from a python script
  • 另外,您可以使用subprocess.check_call,因此您不必使用assert
  • @MattClark 是的,我想是的,尽管我认为提供的答案比其他页面上给出的任何答案都要好,至少对于 python3 而言。

标签: python mysql python-3.x


【解决方案1】:

您可以使用shutil.which。这在 Python 3.3+ 中可用,并且将使用与您正在运行的操作系统相同的 PATH 查找。

from shutil import which

def mysql_exists():
    """
    Verifies that the MySQL client is available. Returns true if it exists,
    and false if it does not.
    """
    return which('mysql') is not None

【讨论】:

  • @MattClark,我想是的。看起来你的评论是在我写回复的时候发布的。对于重复的信息,我深表歉意。 编辑:看起来我正在回复的评论不再可见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多