从python 2.7中的列表插入数据库

时间:2015-09-01 03:59:43

标签: python mysql list

假设我在列表中有列表。我希望它在数据库中插入列表项。

[['1', '2', '3'], ['0.2', '2.3', '4'], ['5.4', '2', '3']]

在这里你会看到主列表有三个子列表。我想要数据库第一列1,0.2,5.4,数据库第二列2,2.3,2和数据库第三列3,4,3。 代码的一部分给出了:

FILE_NAME = "mmd.txt"
list=[]
with open(FILE_NAME, 'r') as f:
    lines = f.read().split('\n');
    for line in lines:
        list.append(line.split(','))

print list
for i in list:
    print i
    for j in i:
        print j
    print 'new line'

我可以将子列表与列表分开,我也可以将项目与子列表分开但是如何将它们分别插入到我的数据库中?请提出您的意见/建议。

3 个答案:

答案 0 :(得分:3)

您可以使用executemany()解决问题:

cursor.executemany("""
    INSERT INTO 
        MYTABLE
        (COLUMN1, COLUMN2, COLUMN3)
    VALUES
        (%s, %s, %s)
""", mylist)

其中,我假设mylist是一个列表,每个列表包含3个项目:

[
    ['1', '2', '3'], 
    ['0.2', '2.3', '4'], 
    ['5.4', '2', '3']
]

并且不要将变量命名为list,以避免影响内置list

答案 1 :(得分:0)

    import MySQLdb

    my_list = [['1', '2', '3'], ['0.2', '2.3', '4'], ['5.4', '2', '3']]
    res_list = []

    for i,j,k in zip(my_list[0],my_list[1],my_list[2]):
        res_list.append(i+','+j+','+k)

    db = MySQLdb.connect(host="localhost", # your host, usually localhost
                         user="root", # your username
                          passwd="", # your password
                          db="db_name")

    cur = db.cursor()
    cur.execute("insert into tablename (column1,column2,column3) values(%s,%s,%s)",(res_list[0],res_list[1],res_list[2]))

答案 2 :(得分:0)

根据alecxe的答案,您应该使用executemany,并在最后execute命令之后添加commit命令。假设您的数据库对象名称为myDbName

  

myDbName.commit()