【问题标题】:Connect to web-service/API in MySQL?连接到 MySQL 中的 Web 服务/API?
【发布时间】:2012-06-23 02:01:57
【问题描述】:

我正在创建一个基于 sql 的过程,它可以

  1. 接受表格
  2. 一次加载一个值
  3. 将变量发送到远程 API
  4. 记录 API 的响应
  5. 将响应写入表格以供稍后查看

我已经成功地实现了 1,2 和 5。我希望有一些方法可以选择联系地址并让 SQL 也可以监听响应。如果您有任何建议,请告诉我!

【问题讨论】:

  • 并非如此(虽然您可以使用存储过程和专有扩展,但它可能不是您想要的)。我认为您应该为此使用脚本语言,它会为您执行数据库操作 - PHP、Ruby、Python、Java 等。
  • “接受表格”和“加载值”是什么意思?
  • (啊 - 你正在使用存储过程。嗯,可能需要更多细节 - 我仍然不会在 SQL 中完成整个事情,即使结果是有可能)。
  • 例如,如果我正在检查名称。我在运行该过程的查询中得到了我想检查的表。然后我沿着表的名称列向下并将名称(通过循环)加载到一个变量中,然后将其发送到远程 API 进行评估,然后然后获取要记录的响应。然后重复循环以对尽可能多的名称执行此操作。除了联系 API 并记录结果外,我已经成功完成了所有工作。所以我已经“加载”了变量并将它们写入一个没有问题的新表。我希望有一种sql方式来解决api联系问题。
  • 好的,我明白你现在在做什么。但是,为什么您“希望使用 SQL 方式”——您是否有特别的原因要避免使用编程语言?

标签: mysql sql web-services


【解决方案1】:

如果不使用用户定义的函数扩展 MySQL 服务器,MySQL 无法使用在服务器上执行的 SQL 代码来执行此操作。

其他一些 SQL 表服务器(例如 PostgreSQL、Microsoft SQL Server、Oracle)可以使用存储过程来做到这一点。但是,从驻留表服务器的代码访问网络资源(如 API)是一项棘手的工作,因为这些资源可能会超时或以其他方式失败。

当你在表服务器中运行时,这种事情是一个总要调试的毛球。

您最好编写一大块客户端代码(我的意思是作为 MySQL 服务器客户端的代码)来执行此操作。有很多语言可以很容易地支持这一点,包括python、php、PERL、C#、Java等。

【讨论】:

    【解决方案2】:

    MySQL 调用 Web 服务的唯一方法是通过自定义 UDF。

    请参阅下面的链接,但基本上您需要做的是构建一个 C 程序,该程序将使用变量作为参数调用远程 Web 服务 API,通过 UDF 将响应返回到您的实际 SQL,该 SQL 可以将结果插入到一张桌子。不过,这是一项相当多的工作,尤其是如果您对 C 完全不熟悉的话。

    http://www.codeguru.com/cpp/data/mfc_database/misc/article.php/c12615/MySQL-UDFs.htm

    【讨论】:

    • 非常感谢!我想这就是我一直在寻找的东西(我有点精通 C,但发现 PHP 令人生畏)。如果您有任何其他网站帮助您进行 UDF 开发,或者有任何提示,请告诉我!
    • 旧但如果您使用 Visual Studio 进行开发会有所帮助 - rpbouman.blogspot.com/2007/09/…
    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 2015-06-06
    • 2014-04-02
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多