2017-12-22 8 views
0

郵便配達員のjson文字列配列を使用してmysqlテーブルにデータを挿入したいとします。 1つのデータベースに2つのテーブルがあります。 1つは質問のためであり、もう1つは答えのためのものです。ポストリクエストを使用して質問と回答を表に挿入したいテーブルにjson文字列を挿入

ここで私はコードを試しました。

app = Flask(__name__) 

api = Api(app) 

class train(Resource): 

    def post(self): 
     account_id = request.json['account_id'] 
     question = request.json['question'] 
     answer = request.json['answer'] 
     question_id = request.json['question_id'] 
     conn = db_connect.connect() 
     query =conn.execute ("INSERT INTO ai_question (account_id,question) 
       VALUES (%s, %s)", (account_id, question)) 
     query1 =conn.execute ("INSERT INTO ai_answer (question_id, answer) 
       VALUES (%s,%s)", (question_id, answer)) 
     result1 = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in 
       query.cursor]} 
     result2 = {'data': [dict(zip(tuple (query1.keys()) ,i)) for i in 
       query1.cursor]} 
     return jsonify(result1, result2)  

api.add_resource(trainings, '/trainings') 
api.add_resource(ask, '/ask') 
api.add_resource(train, '/train') 

if __name__ == '__main__': 
    app.run('0.0.0.0',5000) 

郵便配達員の下にjson stringを書き込むことによってテーブルにデータを挿入します。

{ 
    "question":"abc", 
    "answer":"xyz", 
    "question_id":"1", 
    "account_id":"1" 
} 

が、私は郵便配達を使用して、このようにデータを挿入する:

{ 
    "account_id":"11", 
    "data": [ 
     { 
      "question":"how are you?", 
      "answer":"I am good how about you?" 
     }, 
     { 
      "question":"thank you", 
      "answer":"welcome" 
     } 
    ] 
} 

「質問」と「答え」は異なる表の列です。

+0

まずデータ配列にアクセスしようとしましたか?最初の値を得るには 'data [0] .question'のようなことをする必要があると確信しています。 –

+0

親愛なるダニー、私はあなたにこれを初めて知っていることを申し訳なく思っています。私はどのように 'data [0] .question'を使うべきかわかりません。私を案内してもらえますか?前もって感謝します。 – Pooa

+0

私はフラスコやPythonを巨大な方法では知りませんが、私が見ることができるものから[ここ](http://flask.pocoo.org/docs/0.12/api/#response-objects) - 'question = request.json ['question'] 'は、あなたの例で' data'配列の値を受け取ることができません。私はおそらく間違っていますが、 'question = request.json ['data'] [0] ['question']'は最初の値を取り上げるかもしれません。これは基本的な[チュートリアル](https://www.w3schools.com/js/js_json_arrays.asp)ですが、JSONのデータにアクセスする方法を理解するのに役立ちます。 –

答えて

0
question = request.json['data'][0]['question'] 

となります。

+0

"あなたはどうですか"、 "歓迎"だけを挿入しています。すべての文字列を挿入するには? – Pooa

+0

私の提案は配列の最初の質問だけを取得するので、データをループする必要があります。その分野の研究情報 - 少なくともあなたの側で仕事の解決策を見つけるためには、あるレベルの仕事をする必要があります。 –

+0

このような[1](https://stackoverflow.com/a/42445265/6028443)のようなさまざまな質問をして、必要なデータを取得するさまざまな方法を試してみてください。その部分をコードから抽出して、それを元に戻す前にそれを孤立して見つけようとします。 –

関連する問題