python - 使用 Python 将列表插入我的数据库

标签 python mysql sql

<分区>

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

这是我需要的示例:

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

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

这样的事情能做吗?我可以插入一个列表作为值吗? 当我尝试时,出现错误说这是因为 MySQL 语法错误

最佳答案

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

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

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

不幸的是,这种变量插入方式会使您的代码容易受到 SQL injection attacks 的攻击。 .

相反,我们建议使用 Python's 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 docs开头的例子展示了如何使用问号传递参数,并解释了为什么需要问号(本质上,它确保正确引用变量)。

关于python - 使用 Python 将列表插入我的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49810587/

相关文章:

python - 使用 pydub 处理 24 位 wavs

python - SWIG- 将 C++ 枚举转换为 Python 枚举

python - Scikit-learn 的带有线性内核 svm 的 GridSearchCV 花费的时间太长

PHP MYSQL PDO 列的总和

python - 如何在 VSCode 中使用 yapf(或 black)

php - 我想将表单信息添加到数据库表中现有的用户(使用 PHP)

mysql - sql mysql 有值时返回列名

mysql - 如何在 jasperreports 中聚合(总和)整个月的值(每个月应该是之前所有月份的总和)

sql - 使用数据库的主键作为业务对象标识符是一个坏主意吗?

mysql - REPLACE INTO SQL 语法错误