2012-05-11 3 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

Запрос HAS-коллабораторы, но нет связи, вы используете СУБД, я полагаю, Google Cloud Cloud Storage? Это не имеет смысла. –

+0

Ну и («НЕКОТОРЫЙ 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

Ваш текст _should_ будет unicode, если это текст. –

Смежные вопросы