如何在MySQL Workbench中使用Python脚本执行SQL查询

如何在MySQL Workbench中使用Python脚本执行SQL查询,python,mysql,mysql-python,mysql-workbench,database-administration,Python,Mysql,Mysql Python,Mysql Workbench,Database Administration,我想在MySQL工作台中从Python脚本环境执行SQL查询。我查看了并找到了executeScript方法,但似乎无法使用它进行查询 执行此Python代码: import grt querystring = "select * from Purchases WHERE PurchaseAmount > 600 and PurchaseAmount < 2500" executeScript(querystring) 导入grt querystring=“从PurchaseAm

我想在MySQL工作台中从Python脚本环境执行SQL查询。我查看了并找到了executeScript方法,但似乎无法使用它进行查询

执行此Python代码:

import grt

querystring = "select * from Purchases WHERE PurchaseAmount > 600 and PurchaseAmount < 2500"
executeScript(querystring)
导入grt
querystring=“从PurchaseAmount>600且PurchaseAmount<2500的采购中选择*”
executeScript(查询字符串)
生成以下错误消息:

Uncaught exception while executing [filepath]runquery.py:

File "[filepath]runquery.py", line 10, in <module>

executeScript(querystring)

NameError: name 'executeScript' is not defined
执行[filepath]runquery.py时出现未捕获异常: 文件“[filepath]runquery.py”,第10行,在 executeScript(查询字符串) NameError:未定义名称“executeScript” 我不明白虚拟grt::ListRef executeScript(const std::string&sql)是什么意思,因此我无法正确格式化查询,但是,错误消息似乎表明executeScript方法无论如何都不存在。我看到的大多数文档都有格式正确的函数调用示例,但我似乎找不到executeScript的示例

我只想在MySQL Workbench Python脚本环境中以SQL查询的形式运行字符串

谢谢大家!

我不熟悉Python和SQL,所以请耐心等待。:)

第一个问题似乎是您使用了一个名为executeScript()的函数,该函数尚未定义或从任何地方获取。如果是在grt模块中(我不熟悉),您必须按照以下步骤操作:

from grt import executeScript

querystring = "select * from Purchases WHERE PurchaseAmount > 600 and PurchaseAmount < 2500"
executeScript(querystring)
来自grt导入执行脚本
querystring=“从PurchaseAmount>600且PurchaseAmount<2500的采购中选择*”
executeScript(查询字符串)

要运行executeScript函数,您需要与sqleditor对象交互。 对于测试,请在MS Windows上使用示例数据库执行下一步操作:

  • 启动MySQLWorkbench
  • 连接到本地数据库
  • 从模式中选择sakila
  • 使用工具->脚本编写shell或(Ctrl+F3)开始脚本编写shell
  • 添加新的python脚本(test.py)
  • 使用下面的内容保存脚本
  • 在脚本shell中运行脚本
  • 脚本内容:

    import grt
    
    result = grt.root.wb.sqlEditors[0].executeScript("select * from actor limit 10;")
    
    for col in result[0].columns:
        print col.name
    

    要了解如何引用脚本中的对象,可以很容易地使用Globals树面板的类浏览器,使用鼠标右键单击对象并选择“复制Python路径”

    如果需要在Windows中从命令行运行脚本,可以运行类似以下命令的操作:

    "C:\Program Files\MySQL\MySQL Workbench 6.1 CE\MySQLWorkbench.exe" -query "Local instance MySQL56" -run-python "execfile('c:\Users\Root\AppData\Roaming\MySQL\Workbench\scripts\script.py')" -log-to-stderr -v
    

    我用“导入grt”导入了整个模块。。。即使如此,将其替换为“from grt import executeScript”也会产生“NameError:名称'executeScript'未定义”@JaneGoodall-问题是您要么通过执行'from grt import executeScript'显式导入该方法,要么通过执行'grt.executeScript()'为该方法使用grt前缀”。Python就是这样工作的。尽管如此,我还是觉得很有趣,即使您现在显式地导入了该方法,它仍然似乎是未定义的。我认为在我们做出判断之前,您确实需要向我们展示更多的代码。为什么不使用pastebin发布整个脚本?我的整个脚本都在原始问题中,在第一个灰色框中。我认为executeScript是一种实例级方法(很难说,因为我不理解文档,我在原始问题中链接了文档),所以我需要创建一个对象类型正确的实例,并像obj.executeScript(foo,bar)那样调用它。通常,这个对象是与服务器的连接a)但我已经连接到MySQL Workbench中的服务器,b)以这种方式调用它需要我将密码以明文形式放入Python文件中,这是非常危险的。此外,将调用更改为grt.executeScript(querystring,'sql')会产生“AttributeError:'模块'对象没有属性'executeScript'“啊,那样的话,恐怕我帮不了你。但是,请注意python文件中的密码。我不知道你是否会发布这个脚本,但只要它在你自己的计算机上运行,我想没有什么好担心的。根据用户要求,它必须在MySQL Workbench脚本Shell环境中运行。谢谢,但这个问题是关于在MySQL Workbench的Python脚本中执行SQL查询,不是从cmd.exe或PowerShell.Upvoted,只是因为知道如何从cmd执行很好