2012-05-11 18 views
1

入力フィールドは基本的にカンマ区切りの文字列(「deniscm、toms、peters」など)です。その情報はAJAX経由でPythonハンドラSaveQueryPageに送られます。私がしたいことは、この情報をリストとして解析し、各エントリをデータベースに挿入することです。私のコードは以下の通りですが、残念ながらうまくいきません。助言がありますか?リスト項目をデータベースに別々の項目として挿入する

Pythonコード:

class SaveQueryPage(webapp2.RequestHandler): 
    def post(self): 
    user = users.get_current_user() 
    user_nickname = user.nickname() 
    query_name = self.request.get('queryName') 
    query_collab = self.request.get('queryCollab') 

    query_collaborators = re.split(r'\s*[,]\s*', query_collab.strip()) 
    query_collaborators = query_collaborators.append(user_nickname) 
    query_collaborators = filter(None, query_collaborators) 

    conn = rdbms.connect(instance=_INSTANCE_NAME, database='queryInfo') 
    cursor = conn.cursor() 
    cursor.execute('INSERT INTO queries (userNickname, queryName) VALUES (%s, %s)', (user_nickname, query_name)) 
    conn.commit() 

    for item in query_collaborators: 
     cursor = conn.cursor() 
     cursor.execute('INSERT INTO collaborators (queryName, userNickname) VALUES (%s, %s)', (query_name, item)) 
     conn.commit() 

    conn.close() 
+3

どうしてうまくいかないのですか?間違いはありますか?期待される結果が得られませんか? –

+0

クエリには協力者がいますが、リンクがなく、RDBMSを使用していますが、私はGoogle SQL Cloud Storageと仮定していますか? これは何の意味もありません。 –

+0

Wellと( 'SOME MYSQL QUERY%s')%(var)はあまり安全ではありません。 –

答えて

1

私は最終的にそれが働いて得ることができました。正規表現がリストの項目をユニコード形式にしたように見えますが、これはログをいくつか追加したときにしか捕捉されませんでした。また、リストに文字列を追加する際にエラーが発生しました。ポインタをありがとう!以下のコードは現在私のために働いています:

class SaveQueryPage(webapp2.RequestHandler): 
    def post(self): 
    user = users.get_current_user() 
    user_nickname = user.nickname() 
    user_email = user.email() 

    query_name = self.request.get('queryName') 
    query_description = self.request.get('queryDescription') 

    query_collab = self.request.get('queryCollab') 
    logging.info('Data read for query_collab is %s', query_collab) 

    query_collab_re = re.split(r'\s*[,;]\s*', query_collab.strip()) 
    logging.info('Data read for query_collab_re is %s', query_collab_re) 

    query_collab_decode = [] 
    for item in query_collab_re: 
     item = str(item) 
     query_collab_decode.append(item) 
    logging.info('Data read for query_collab_decode is %s', query_collab_decode) 

    query_collab_decode.append(user_nickname) 
    logging.info('Data read for query_collab_append is %s', query_collab_decode) 

    query_collab_filter = filter(None, query_collab_decode) 
    logging.info('Data read for query_collab_filter is %s', query_collab_filter) 

    query_value = self.request.get('queryValue') # query_value 
    date_created = datetime.today() 
    date_lastupdated = datetime.today() 
    active_flag = "true" 
    random_id = random.randint(1000000000000, 9999999999999) 
    unique_query_id = user_nickname + "_" + str(random_id) 

    conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs') 
    cursor = conn.cursor() 
    cursor.execute('INSERT INTO queries (userNickname, queryName, queryDescription, queryValue, dateCreated, dateLastUpdated, activeFlag, uniqueId) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (user_nickname, query_name, query_description, query_value, date_created, date_lastupdated, active_flag, unique_query_id)) 
    conn.commit() 

    try: 
     for item in query_collab_filter: 
     cursor = conn.cursor() 
     cursor.execute('INSERT INTO collaborators (uniqueId, userNickname) VALUES (%s, %s)', (unique_query_id, item)) 
     conn.commit() 
    except: 
     logging.error('There was an error inserting the values into the collaborators table. query_collaborators =' + str(query_collaborators)) 

    conn.close() 
+0

ランダムの代わりにhttp://stackoverflow.com/questions/534839/how-to-create-a-guid-in-pythonを使用してください –

+0

ありがとう!それはずっと意味があります! – koend

+0

実際にテキストの場合は、テキストをUnicodeにする必要があります。 –

関連する問題