一个支持MYSQL语句的PYTHON脚本
起因是,mysql无法连接远程的机器,但是用python却可以。
写了这个脚本
import pymysql
import argparse
# MySQL 连接信息
host = '192.168.1.1' # 替换为你的 MySQL 服务器 IP
user = 'ecology' # 替换为你的 MySQL 用户名
password = 'ecology1234' # 替换为你的 MySQL 用户密码
database = 'ecology' # 替换为数据库名
def execute_query(query):
try:
# 建立连接
connection = pymysql.connect(
host=host,
user=user,
password=password,
database=database,
port=3306, # MySQL 默认端口
connect_timeout=5 # 设置超时时间
)
print("Connection successful!")
# 执行查询
with connection.cursor() as cursor:
cursor.execute(query)
results = cursor.fetchall() # 获取所有结果
columns = [desc[0] for desc in cursor.description] if cursor.description else [] # 获取列名
print("Query executed successfully.")
return columns, results # 返回列名和查询结果
except pymysql.MySQLError as e:
print("Connection failed.")
print(f"Error: {e}")
return None, None
finally:
# 关闭连接
if 'connection' in locals() and connection.open:
connection.close()
print("Connection closed.")
if __name__ == "__main__":
# 设置命令行参数解析
parser = argparse.ArgumentParser(description="Execute a MySQL query from command line.")
parser.add_argument("query", type=str, help="The SQL query to execute.")
args = parser.parse_args()
# 从命令行参数接收 SQL 查询
query = args.query
columns, results = execute_query(query)
# 打印查询结果
if results is not None:
# 打印列名
print("Columns:", columns)
# 打印每一行结果
for row in results:
print(row)
用法:
python testmy.py "SHOW COLUMNS FROM ws_datasource;"
python testmy.py "select * FROM weaver_sso LIMIT 100;"