使用python在特定列中插入列表

时间:2018-01-14 09:05:06

标签: python mysql sql list

我有一个数据库,其中有两列 sess_id 数据。现在我想从py到db插入一个列表我应该怎么做。 假设这是要插入列表的数据列的列表。 database_list = ['elem1','elem2','elem3'...]

这已经完成但没有进展:

    cursor_three=conn.cursor()
    cursor_three.execute('INSERT INTO table (data) VALUES (database_list)') 
    cursor_three.commit()  

2 个答案:

答案 0 :(得分:0)

取决于你想做什么。如果要将值列表插入到一列中,可以循环遍历列表并逐行插入。您也可以使用executemany而不是execute。

如果你直接输入列表然后使用excutemany,否则如果你在列表中循环使用execute。

cursor.executemany("""
              INSERT INTO table
              (data)
              VALUES (?)
              """, data_list)

OR

for i in data_list:
    cursor.execute("INSERT INTO table (data) VALUES (?)", i)

答案 1 :(得分:0)

您应该像这样迭代列表:

cursor_three=conn.cursor()
for elem in database_list:
    cursor_three.execute('INSERT INTO table (data) VALUES (%s)' % elem) 
cursor_three.commit()  

之后,除非您将 sess_id 列声明为自动增量行,否则它将为空。如果您有两个已排序的数组,例如

database_id_list = [212, 444, 532...]
database_data_list= ['elem212','elem444','elem532'...]

您应该使用 zip()函数以相似的方式迭代它们,如下所示:

for elem in zip(database_id_list, database_data_list):
    cursor_three.execute('INSERT INTO table (sess_id, data) VALUES (%s, %s)' % elem)  # elem is tuple here

请注意,此代码使用字符串fromat函数来简化(您没有注意到您正在使用哪个数据库)并且它不受 SQL注入的保护。您最好使用sql deriver的格式化程序,例如psycopg2:

cursor_three.execute('INSERT INTO table (data) VALUES (%s)', [elem])