Как связать действие в IBM Cloud Functions с базой данных? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть разговор в 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 голосов
/ 16 октября 2018

Ошибка возникает из-за того, как вы возвращаете результат.Вам необходимо упаковать результат в допустимую структуру JSON.

return {"sqlresult": myresult}

Я ссылался на два руководства в комментарии выше. Учебное пособие по чат-ботам использует Node.js для реализации облачных функций.Эти функции вызываются из Watson Assistant. Посмотрите на это действие, которое извлекает записи из базы данных Db2 .Он открывает соединение с базой данных, выбирает записи и упаковывает их в структуру JSON.Затем этот объект JSON возвращается в Watson Assistant.

В руководстве также показано, как передать учетные данные базы данных в облачную функцию.

...