Как связать действие в IBM Cloud Functions с базой данных?

Я разговариваю в помощнике watson, и я хочу иметь возможность вызвать действие из облачной функции 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."
}


person Alessandro Saletti    schedule 16.10.2018    source источник
comment
Оба этих руководства используют облачные функции для подключения к базе данных: console. bluemix.net/docs/tutorials/ и консоль .bluemix.net / docs / tutorials / Код доступен на GitHub.   -  person data_henrik    schedule 16.10.2018


Ответы (1)


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

return {"sqlresult": myresult}

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

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

person data_henrik    schedule 16.10.2018