import subprocess
class MySQLRemoteConnection:
def __init__(self, host, user, password, database):
"""
初始化远程MySQL连接类。
:param host: 数据库主机地址
:param user: 数据库用户名
:param password: 数据库密码
:param database: 要连接的数据库名称
"""
self.host = host
self.user = user
self.password = password
self.database = database
def connect(self):
"""
连接到MySQL数据库。
:return: None
"""
# 构建连接命令
command = f"mysql h {self.host} u {self.user} p'{self.password}' {self.database}"
# 执行命令
try:
# 使用subprocess.Popen来执行命令,并捕获输出
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
# 检查是否有错误输出
if stderr:
raise Exception(f"Error connecting to MySQL: {stderr.decode().strip()}")
print("Connected to MySQL database successfully.")
except Exception as e:
print(f"An error occurred: {e}")
def execute_query(self, query):
"""
执行一个查询。
:param query: 要执行的SQL查询
:return: None
"""
# 构建查询命令
command = f"mysql h {self.host} u {self.user} p'{self.password}' {self.database} e '{query}'"
# 执行命令
try:
# 使用subprocess.Popen来执行命令,并捕获输出
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
# 检查是否有错误输出
if stderr:
raise Exception(f"Error executing query: {stderr.decode().strip()}")
print("Query executed successfully.")
print(stdout.decode().strip())
except Exception as e:
print(f"An error occurred: {e}")
使用示例
if __name__ == "__main__":
# 创建一个连接实例
mysql_conn = MySQLRemoteConnection('your_host', 'your_user', 'your_password', 'your_database')
# 连接到数据库
mysql_conn.connect()
# 执行一个查询
mysql_conn.execute_query("SELECT * FROM your_table")
在这个类中,connect 方法用于建立与MySQL数据库的连接,而execute_query 方法用于执行SQL查询,此代码假设MySQL客户端已经安装在执行脚本的环境中,并且MySQL服务是可访问的。

在实际使用中,你需要替换'your_host','your_user','your_password', 和'your_database' 为你的数据库的实际连接信息,出于安全考虑,直接在命令行中使用密码可能不是最佳实践,考虑使用更安全的方法来管理数据库凭据。
