从python列表迭代插入MySQL表

时间:2014-02-18 23:51:46

标签: python mysql mysql-python

我尝试将下面列表中的项目(使用MySQLdb模块)插入到mysql表中,只是为了找出插入的字母“x”而不是列表中的名称。

name_list=['james', 'john', 'michael']
for x in name_list:
    cur.execute("INSERT INTO box(names) VALUES('x')")
db.commit()

有什么建议吗? 感谢。

这是一个有效的方法,但仅适用于int数据类型:

for x in xrange(1,1000,2):
    cursor.execute('INSERT INTO Persons (PersonID) VALUES(' + str(x) + ');')

1 个答案:

答案 0 :(得分:2)

如果是这种情况,则插入字符串x。变量x不会解析为SQL命令。但是,大多数数据库库的execute语句在插入参数时都有一个巧妙的技巧,如下所示:

MySQLdb的

cur.execute("INSERT INTO box(names) VALUES(%s)", (x,))

*请注意x(x,),因此当它被放入SQL命令时,它被视为元组。

pyodbc

cur.execute("INSERT INTO box(names) VALUES(?)",x)

如您所见,不同库的细节略有不同。请参阅模块的paramstyle,了解它用于字符串中占位符的格式,以及模块的文档,了解为参数而不是元组提供单个参数时的操作。

这将获取x并将其放在命令的值中。更好的是它根据目标表格式化它!