Невозможно проанализировать тип списка в mysql, используя python - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь вставить данные из записей, которые имеют списки или кортежи в данных. Я пытался использовать следующий код:

Код:

import mysql.connector

#Create connection, added db we created#
connection = mysql.connector.connect(
    host='localhost', 
    user='root', 
    password='123', 
    database='testdb_1'
    ) 

#Create cursor for the connection
my_cursor = connection.cursor()

#Create SQL statement with placeholders and put in variable 
mike_placeholders="INSERT INTO users (name,emails,ranksheld) VALUES (%s, %s, %s) "

    #Create list (array) of records
    records_list = [('Tim',['Tim@tim.com', 'tim12@tim12.com'],[2,3]), ('Mary',['Mary@mary.com'],[40, 45, 52]), ('Sam',['Sam@sam.com'],None), ('Fred',['Fred@fred.com'],[4]) ]

    #Execute cursor, requires SQl statement variable, record variable
    my_cursor.executemany(mike_placeholders,records_list)

    #Commit the connection to make the change on the database
    connection.commit()

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

InterfaceError: Failed executing the operation; Python type list cannot be converted

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 30 апреля 2020

Проблема в том, что у вас есть массивы в кортежах. Если вы хотите вставить несколько строк с одним и тем же именем или адресом электронной почты, вам нужно добавить дополнительные кортежи в ваш массив. Пример:

import mysql.connector

#Create connection, added db we created#
connection = mysql.connector.connect(
    host='localhost', 
    user='root', 
    password='123', 
    database='testdb_1'
    ) 

#Create cursor for the connection
my_cursor = connection.cursor()

#Create SQL statement with placeholders and put in variable 
mike_placeholders="INSERT INTO users (name,emails,ranksheld) VALUES (%s, %s, %s) "

    #Create list (array) of records
    records_list = [('Tim','Tim@tim.com',2), ('Tim', 'tim12@tim12.com',3), ('Mary','Mary@mary.com',40), ('Mary','Mary@mary.com', 45), ('Mary','Mary@mary.com', 52), ('Sam','Sam@sam.com',None), ('Fred','Fred@fred.com',4) ]

    #Execute cursor, requires SQl statement variable, record variable
    my_cursor.executemany(mike_placeholders,records_list)

    #Commit the connection to make the change on the database
    connection.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...