Python MySQL Insert Python 'series' не может быть преобразован в тип MySQL

0

У меня есть кадр данных, который является агрегацией, в которой я пытаюсь вставить в базу данных MySQL. Данные выглядят следующим образом:

                first                last  count      type  \
group                                                            
1     2018-01-12 00:00:00 2018-01-13 23:00:00    189  Received   
2     2018-01-13 23:15:00 2018-01-14 00:00:00      4    Missed   
3     2018-01-14 00:15:00 2018-01-14 23:45:00     95  Received   
4     2018-01-15 00:00:00 2018-01-15 04:45:00     20    Missed   
5     2018-01-15 05:00:00 2018-01-15 14:00:00     37  Received   
6     2018-01-15 14:15:00 2018-01-15 14:45:00      3    Missed   
7     2018-01-15 15:00:00 2018-01-15 15:45:00      4  Received   
8     2018-01-15 16:00:00 2018-01-16 23:45:00     31    Missed  

        id
group                    
1      ABC123
2      ABC123
3      ABC123
4      ABC123
5      ABC123
6      ABC123
7      ABC123
8      ABC123

Когда я смотрю на тип данных, это указывает на то, что это кадр данных:

In [990]: type(result)
Out[990]: pandas.core.frame.DataFrame

Однако, когда я пытаюсь вставить данные в MySQL, я получаю следующую ошибку:

Failed processing format-parameters; Python 'series' cannot be converted to 
a MySQL type

Вот код, который я использую для вставки:

for a, b in result.iterrows():

    e_point = result['id'][[a]]
    t = result['type'][[a]]
    num = result['count'][[a]]
    first = result['first'][[a]]
    last = result['last'][[a]]

    try:
       cnx_insert = connector.connect(user='abc', password='abc',
                                         host = 'blah',
                                         port = '3306',
                                         database='some_database')
    except:
        cnx_insert = connector.connect(user='abc', password='abc',
                                     host = 'blah',
                                     port = '3306',
                                     database='some_database')

    cursor_insert = cnx_insert.cursor()
    try:
        values = (id, type, count,  first, last)
        insert_query = ("INSERT INTO some_database.some_table"
                             "(id, message_status, read_intervals, first_reading_time,last_reading_time)"
                             "VALUES(%s, %s, %s, %s, %s)")
        cursor_insert.execute(insert_query, values) 
        cnx_insert.commit()
    except Exception as e:
        print str(id)
        print e
    cnx_insert.close()

У меня никогда не возникало проблем с вставкой, и я пробовал делать множество вещей для решения таких задач, как превращение данных в список и кортеж.

Любая помощь приветствуется.

Теги:

1 ответ

0

Я знаю, что вы используете коннектор для сохранения в mysql. Но почему так сложно? Вы можете легко использовать

df.to_sql(table_name, connection, if_exists='append', index=False)

для сохранения вашего фрейма данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню