You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Bash的MySQL查询导出逻辑转为Python脚本?

问题描述

原本在Bash中使用以下命令从test_cases表查询framework为Java的class和testcase列数据,导出到testcases文件:

echo "select class, testcase from test_cases where framework = 'Java';" | mysql -h vm.dev.midasplayer.com --ssl-mode=DISABLED -u ${DB_USER} -p${DB_PASSWORD} tabletest > testcases

已通过Python的mysql.connector成功连接数据库,但不知道如何执行查询并将结果写入文件,现有连接代码如下:

import mysql.connector

mydb = mysql.connector.connect(
  host="vm.dev.midasplayer.com",
  user="username",
  password="password"
)

print(mydb)
解决方案

按以下步骤补充代码即可实现需求:

  • 指定目标数据库:
    原Bash命令指定了tabletest数据库,同时需要关闭SSL验证,修改连接代码添加对应参数:

    mydb = mysql.connector.connect(
      host="vm.dev.midasplayer.com",
      user="username",
      password="password",
      database="tabletest",  # 指定要操作的数据库
      ssl_disabled=True  # 对应Bash中的--ssl-mode=DISABLED
    )
    
  • 创建游标并执行查询:
    通过游标执行SQL语句并获取结果:

    mycursor = mydb.cursor()
    sql = "SELECT class, testcase FROM test_cases WHERE framework = 'Java';"
    mycursor.execute(sql)
    
  • 获取结果并写入文件:
    先获取字段名作为表头,再将查询结果按制表符分隔的格式写入文件(和Bash命令输出格式保持一致):

    # 获取字段名列表
    column_names = [desc[0] for desc in mycursor.description]
    # 获取所有查询结果
    results = mycursor.fetchall()
    
    # 写入文件
    with open("testcases", "w") as f:
        # 写入表头
        f.write("\t".join(column_names) + "\n")
        # 逐行写入数据
        for row in results:
            f.write("\t".join(str(item) for item in row) + "\n")
    
  • 关闭资源:
    操作完成后关闭游标和数据库连接:

    mycursor.close()
    mydb.close()
    

完整可运行代码:

import mysql.connector

# 连接数据库
mydb = mysql.connector.connect(
  host="vm.dev.midasplayer.com",
  user="username",
  password="password",
  database="tabletest",
  ssl_disabled=True
)

# 创建游标并执行查询
mycursor = mydb.cursor()
sql = "SELECT class, testcase FROM test_cases WHERE framework = 'Java';"
mycursor.execute(sql)

# 获取字段名和查询结果
column_names = [desc[0] for desc in mycursor.description]
results = mycursor.fetchall()

# 写入结果到文件
with open("testcases", "w") as f:
    f.write("\t".join(column_names) + "\n")
    for row in results:
        f.write("\t".join(str(item) for item in row) + "\n")

# 关闭资源
mycursor.close()
mydb.close()

内容的提问来源于stack exchange,提问作者user21050760

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:25:29