如何将IBM Cloud Functions上的操作与数据库连接?

时间:2018-10-16 11:28:09

标签: node.js sql-server ibm-cloud watson-conversation ibm-cloud-functions

我在Watson Assistant中进行了交谈,我希望能够从IBM云功能调用一个操作,以便对我的数据库进行查询(Azure)。我不熟悉云功能,所以这可能是一个愚蠢的问题,我不了解如何与数据库建立连接,我尝试编写一些nodejs代码,但是当然我错了,因为它会返回“内部错误” ”。 我也尝试用python而不是nodejs编写一些代码。 同样,这是一个愚蠢的问题,请原谅我。谢谢!

    var mysql = require('mysql');

    var connection = mysql.createConnection({
      host: 'my_host',
      user: 'my_user',
      password: 'my_psw',
      database: 'my_db'
    });

    connection.connect();

    rows = connection.query('my_query')
    if (!err) {
      console.log(typeof(rows));
      console.log('The solution is: ', rows);
    } else {
      console.log(typeof(rows));
      console.log('Error while performing Query.');

    }


    connection.end();

{
  "error": "Internal error."
}

import pyodbc as pyodbc

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=my_server;DATABASE=my_db;UID=my_user;PWD=my_pwd')
cursor = conn.cursor()
sql = "my_sql" 
cursor.execute(sql)
result = cursor.fetchall()
print(result)


csr = conn.cursor()
csr.close()
del csr
conn.close()
    

{
  "error": "The action did not return a dictionary."
}

1 个答案:

答案 0 :(得分:0)

错误来自您如何返回结果。您需要将结果打包到有效的JSON结构中。

return {"sqlresult": myresult}

我在上面的评论中引用了两个教程。 chatbot tutorial使用Node.js来实现云功能。这些功能从Watson Assistant中调用。 Take a look at this action that fetches records from a Db2 database。它打开一个数据库连接,获取记录并将它们打包成JSON结构。然后将该JSON对象返回给Watson Assistant。

本教程还显示了如何将数据库凭据传递到Cloud Function中。