我尝试将下面列表中的项目(使用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) + ');')
答案 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并将其放在命令的值中。更好的是它根据目标表格式化它!