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

Python脚本调用Sakura终端执行MySQL批处理文件遇问题求助

问题

需求是通过Python脚本打开Sakura终端,启动MySQL并执行指定的批处理文件,但当前存在两个问题:

  • 执行带批处理的命令时,MySQL无法运行批处理文件
  • 即使执行成功,Sakura终端也会迅速关闭,无法查看查询结果

现有代码

Python执行代码

def terminal(self):
    self.process = QProcess()
    self.process.start("/usr/bin/sakura -e mysql -pxxxxxx source studio.bat")

批处理文件studio.bat内容

USE w_office;
SELECT * FROM `w_data` AS ' ';
SELECT * FROM `w_hour` AS ' ';

可正常进入MySQL但无法执行批处理的命令

self.process.start("/usr/bin/sakura -e mysql -pxxxxxxxxx")
解决方案

方法1:通过bash包裹命令,执行后保持终端打开

调整命令格式,用bash -c组合MySQL执行批处理的操作,最后添加read让终端等待用户输入再关闭:

# 注意替换studio.bat为实际绝对路径(如果不在当前工作目录)
self.process.start("/usr/bin/sakura -e bash -c 'mysql -pxxxxxx < studio.bat; read'")

方法2:使用MySQL的--init-file参数

利用MySQL官方提供的--init-file参数指定启动时执行的SQL文件,执行完成后会保持交互会话,终端不会自动关闭:

# 同样需要确保studio.bat路径正确
self.process.start("/usr/bin/sakura -e mysql -pxxxxxx --init-file=studio.bat")

关键说明

  • 直接在mysql命令后加source无法正确解析,因为-e参数后的内容需要是单个MySQL命令,而source是MySQL交互模式下的命令,无法直接作为命令行参数执行。
  • 添加read或使用--init-file保持交互,是为了避免Sakura终端在命令执行完成后立即退出,让你能查看查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:04:59