【问题标题】:calling mysql from a ruby program从 ruby​​ 程序调用 mysql
【发布时间】:2011-09-23 13:04:08
【问题描述】:

我正在尝试对从数据库中提取的数据进行一些简单的统计,但是每当我执行 mysql 命令时,我得到的只是 mysql 使用列表。令我困惑的是这个命令可以在命令行中运行,而不是在我的 ruby​​ 脚本中。

命令:

query   = 'select * from builds;'
results = `mysql -h <hostname> -u root -D build -e #{query}`
print results

我想查看该表中的所有内容,但我得到的是:

mysql Ver 14.12 Distrib 5.0.37,用于 Win32 (ia32) 版权所有 (C) 2002 MySQL AB 这个软件绝对自带 没有保修。这是免费软件, 欢迎您修改和 在 GPL 许可下重新分发它 用法:mysql [选项] [数据库]
-?, --help 显示此帮助并退出。 -I,--帮助
- 的同义词? --auto-rehash
启用自动重新散列。一 不需要使用 'rehash' 来完成表格和字段,但是 启动 并且重新连接可能需要更长的时间。禁用 --禁用自动重新哈希。 -A, --no-auto-rehash 没有自动重新散列。一个人必须使用'rehash'来 得到 表格和字段完成。这提供了一个更快的开始 的 mysql 并在重新连接时禁用重新散列。 警告: 不推荐使用的选项;使用 --disable-auto-rehash 反而。 -B, --batch 不要 使用历史文件。禁用交互 行为。

...等

任何帮助都会很棒。 谢谢。

【问题讨论】:

    标签: mysql ruby


    【解决方案1】:

    我强烈推荐使用mysql gem for ruby。它允许您以本地方式操作,而不是包装命令行。

    但是在您的命令中,我会尝试在执行查询之前将其括在引号中。

    results = `mysql -h <hostname> -u root -D build -e "#{query}"`
    

    【讨论】:

    • 我正在编写的脚本必须在多台个人机器上运行,所以我唯一可以保证的是他们安装了 mysql,我可以判断他们是否有 gem。还要感谢您,因为查询周围的双引号使其执行。
    【解决方案2】:

    你有什么理由不能只使用 mysql gem?

    【讨论】:

    • 我正在编写的脚本必须在多台个人机器上运行,所以我唯一可以保证的是他们安装了 mysql,我可以判断他们是否有 gem。
    猜你喜欢
    • 2019-06-19
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多