假设我在列表中有列表。我希望它在数据库中插入列表项。
[['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'
我可以将子列表与列表分开,我也可以将项目与子列表分开但是如何将它们分别插入到我的数据库中?请提出您的意见/建议。
答案 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()