2017-02-26 5 views
0

Pythonスクリプトを使用して、Ajax POSTから受信したデータでPostgreSQLテーブルを埋めようとしています。PythonスクリプトでAjaxのデータを使用する

私のAjaxのコマンドは次のとおりです。

function ajaxFct() { 
    $.ajax({ 
     async: true, 
     type: "POST", 
     url: "/myDir/cgi-bin/send_array.py", 
     data: my_array, 
     dataType: "html", 
     success : function(data) { 
      document.getElementById("ajaxAnchor").innerHTML = "Exported something to DB table" 
     } 
    }); 
} 

my_arrayでは、例えば、複数のラインを持つCSV文字列のようになります。

[ "HEADER1、HEADER2、header3"、「some_value、45.99、テキスト "]

私のpythonスクリプト(send_array.py)でこの配列を使用する方法は分かりません

今のところ、スクリプトはローカルで定義されたいくつかのデータで正常に動作します(cf.二cursor.executeコマンド):

import psycopg2 
import psycopg2.extras 
import cgitb 

def main(): 
    cgitb.enable() 

    conn_string = "host='...' dbname='...' user='...' password='...' port=..." 
    conn = psycopg2.connect(conn_string) 
    cursor = conn.cursor()  

    cursor.execute("DROP TABLE IF EXISTS myDb.myTable; CREATE TABLE myDb.myTable(id serial PRIMARY KEY, header1 varchar, header2 decimal, header3 varchar);") 
    cursor.execute("INSERT INTO myDb.myTable (header1, header2, header3) VALUES (%s, %s, %s)", ("local_test1",0.12345,"local_test2")) 

    # Make the changes to the database persistent 
    conn.commit()  

    cursor.close() 
    conn.close() 

if __name__ == "__main__": 
    main() 

は、だから私の質問は基本的には次のとおりです。

私は、my_arrayで配列すなわち、AjaxのPOSTから送信されたデータにアクセスする代わりに、SQLクエリで使用する方法ローカルに定義されたデータ?

ご協力ありがとうございます。私はまだまだこれにはまだ新しく、オンラインで回答を見つけるのに苦労しています。

+0

「[ajax投稿要求からの投稿データをpythonファイルで取得する]」(http://stackoverflow.com/questions/27046448/get-post-data-from-ajax-post-request-in-python-ファイル) – hashcode55

+0

投稿していただきありがとうございますが、私はFieldStorage()やフォームに依存しなかった別の解決策を探していました。 rは送信されているデータを保持する方法の私の質問には、私の答えを参照してください。 – sc28

答えて

0

最後に、Pythonスクリプト内のAjaxコマンドからデータを取得する方法が見つかりました。私はローカル変数に送信されたデータを格納するためのPythonスクリプトで次のコマンドで sys.stdinをを使用し、その後

data: JSON.stringify(myArray), 

: まず、私は、ブラウザによって送信されたデータを文字列化しなければならなかった

myDataInPython = json.load(sys.stdin) 
関連する問題