如何通过Python检查给定的MySQL服务器连接?
总之,我试图通过Python验证给定MySQL服务器的连接性,提供主机、用户名、密码和模式。我尝试使用子流程模块,例如如何通过Python检查给定的MySQL服务器连接?,python,mysql,Python,Mysql,总之,我试图通过Python验证给定MySQL服务器的连接性,提供主机、用户名、密码和模式。我尝试使用子流程模块,例如 subprocess.check_call(['mysql', '-u', 'root']) 但它会在终端中启动mysql,这不是我想要的。我还尝试了mysqldb,但它不支持python3+ 有没有办法通过Python测试MySQL服务器的参数?至少我想知道它是否连接。如果我能知道更多关于连接失败的细节,那就更好了 谢谢 你可以用这样的东西。带有连接参数的配置文件和带有错误
subprocess.check_call(['mysql', '-u', 'root'])
但它会在终端中启动mysql,这不是我想要的。我还尝试了mysqldb,但它不支持python3+
有没有办法通过Python测试MySQL服务器的参数?至少我想知道它是否连接。如果我能知道更多关于连接失败的细节,那就更好了
谢谢 你可以用这样的东西。带有连接参数的配置文件和带有错误检查的try语句 创建一个名为config.py的文件
config = {
'user': 'username',
'password': 'password',
'host': 'host_name or ip',
'database': 'database',
'raise_on_warnings': True,
}
使用mysql.connenctor
try:
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
query = ("select statement")
cursor.execute(query)
cursor.close()
cnx.close()
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exists")
else:
print(err)
else:
cnx.close()
用法示例:
>>> print(MySQLCheck(host="localhost", user="root", password="pass"))
(2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
>>> # Later, when I started the server:
(1045, "Access denied for user 'root'@'localhost' (Using password: YES)")
>>> # Later, when I started MySQL server with "--skip-grant-tables" option:
(('information_schema',), ('drupal',), ('forum',), ('mysql',), ('p
性能(模式),(phpmyadmin),(插件),(测试),)
请注意,如果一切正常并执行了查询,MySQLCheck()的返回值可能是异常或元组
要在Ubuntu/Debian上安装PyMySQL for Python3,请执行以下操作:
$ sudo apt-get install python3-setuptools
$ sudo easy_install3 pip
$ sudo pip3.2 install PyMySQL
我希望这是您需要的答案。根据,您可以查看Python 3.3+
如果您确实想使用subprocess,可以添加“-e”标志以在mysql中执行命令
subprocess.check_call(['mysql', '-u', 'root', '-ppass', '-e', "show databases;"])
我想我会试试PyMySQL,我不确定你的代码是什么,但我试过了,效果不太好。我真正想知道的是,MySQL服务器的给定参数是否有效,即是否连接。谢谢。这就是一个例子。今天晚些时候我将生成一些工作代码并发布。我现在很忙。你试过PyMSQL而不是MySQLdb吗?它应该有用。@jackyey!PyMySQL在Python3上工作没有问题。事实上,它有一个Python3版本。我完全编辑了我的答案,并提供了我认为您需要的代码。祝你好运它是否同时支持Python2.x和Python3.x?请参阅。是的,两者都支持。语法可能与3.x略有不同。
subprocess.check_call(['mysql', '-u', 'root', '-ppass', '-e', "show databases;"])