拥有多个列表并将其值插入MySql
下面是我将一些数据读入MySql的代码,MySql表包含4列,在2列中,我想插入数组的项,每列插入一个新行。 我可以在列表中插入一个列表,但我只是想知道如果我有多个列表会发生什么。代码如下:拥有多个列表并将其值插入MySql,mysql,python-3.x,Mysql,Python 3.x,下面是我将一些数据读入MySql的代码,MySql表包含4列,在2列中,我想插入数组的项,每列插入一个新行。 我可以在列表中插入一个列表,但我只是想知道如果我有多个列表会发生什么。代码如下: cursor = db.cursor() r=["2","3"] b=["3","4","5","2"] for x in r: for a in b: insertsql=("insert ignore into new_table (name,last,arrayeha,arra
cursor = db.cursor()
r=["2","3"]
b=["3","4","5","2"]
for x in r:
for a in b:
insertsql=("insert ignore into new_table (name,last,arrayeha,arrayeha_se) values ('ni','sal','"+x+"','"+a+"')")
这里是输出:
1 ni sa 2 2
2 ni sa 3 2
有人能解释一下为什么会这样吗?为什么我看不到第二个列表(b)的所有值?在这种情况下,什么是最好的方法?我不确定它是否能解决您的问题。但是,对我来说,这可能与您的迭代方式有关。例如:
r=["2","3"]
b=["3","4","5","2"]
for x in r:
for a in b:
pass
print(("insert ignore into new_table (name,last,arrayeha,arrayeha_se) values ('ni','sal','"+x+"','"+a+"')"))
输出(您当前的输出):
如果我们用这样的东西来改变它,它就会起作用
r=["2","3"]
b=["3","4","5","2"]
for x in r:
for a in b:
print(("insert ignore into new_table (name,last,arrayeha,arrayeha_se) values ('ni','sal','"+x+"','"+a+"')"))
产出(如预期):
忽略SQL注入
r=["2","3"]
b=["3","4","5","2"]
for x in r:
for a in b:
print(("insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)",("ni",'sal',x,a)))
产出:
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '3'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '4'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '5'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '2'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '3'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '4'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '5'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '2'))
我认为缩进是问题所在。虽然它不可见,但看起来您实际上并不是在迭代内部列表。提示防止使用准备好的语句进行SQL注入。。Python确实支持它们,所以这都是因为缩进?谢谢
r=["2","3"]
b=["3","4","5","2"]
for x in r:
for a in b:
print(("insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)",("ni",'sal',x,a)))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '3'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '4'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '5'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '2', '2'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '3'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '4'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '5'))
('insert ignore into new_table (name,last,arrayeha,arrayeha_se) values (?,?,?,?)', ('ni', 'sal', '3', '2'))