一尘不染

使用Python将清单插入我的资料库

mysql

我想在数据库中插入一个列表,但是不能。

这是我需要的一个例子:

variable_1 = "HELLO"
variable_2 = "ADIOS"
list = [variable_1,variable_2]

INSERT INTO table VALUES ('%s') % list

可以这样做吗?我可以插入列表作为值吗?当我尝试它时,出现错误提示,这是因为MySQL语法错误


阅读 201

收藏
2020-05-17

共1个答案

一尘不染

原始问题的答案是:不,您不能插入这样的列表。

但是,通过一些调整,您可以通过使用%r并传入一个元组来使代码工作:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)

不幸的是,这种变量插入样式使您的代码容易受到SQL注入攻击的攻击

相反,我们建议使用Python的DB
API
并为要插入的数据构建带有多个问号的自定义查询字符串:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1,variable_2]
var_string = ', '.join('?' * len(varlist))
query_string = 'INSERT INTO table VALUES (%s);' % var_string
cursor.execute(query_string, varlist)

SQLite3文档开头的示例显示了如何使用问号传递参数,并说明了为什么必须使用它们(本质上,它可以确保正确引用变量)。

2020-05-17