Inserting a list holding multiple values in MySQL using pymysql

Alice Jarmusch picture Alice Jarmusch · Feb 4, 2017 · Viewed 7k times · Source

I have a database holding names, and I have to create a new list which will hold such values as ID, name, and gender and insert it in the current database. I have to create a list of the names which are not in the database yet. So I simply checked only 3 names and trying to work with them.

I am not sure what sort of list I suppose to create and how I can loop through it to insert all the new values in the proper way.

That's what I have so far:

mylist = [["Betty Beth", "1", "Female"], ["John Cena", "2", "Male"]]

@get("/list_actors")
    def list_actors():  
         with connection.cursor() as cursor:
                    sql = "INSERT INTO imdb VALUES (mylist)"
                    cursor.execute(sql)
                    connection.commit()
                    return "done"

I am very new to this material so I will appreciate any help. Thanks in advance!

Answer

havlock picture havlock · May 19, 2017
vals = [["TEST1", 1], ["TEST2", 2]]

with connection.cursor() as cursor:
    cursor.executemany("insert into test(prop, val) values (%s, %s)", vals )
    connection.commit()

mysql> select * from test;

+----+-------+------+---------------------+
| id | prop  | val  | ts                  |
+----+-------+------+---------------------+
|  1 | TEST1 |    1 | 2017-05-19 09:46:16 |
|  2 | TEST2 |    2 | 2017-05-19 09:46:16 |
+----+-------+------+---------------------+

Adapted from https://groups.google.com/forum/#!searchin/pymysql-users/insert%7Csort:relevance/pymysql-users/4_D8bYusodc/EHFxjRh89XEJ