Python、带有变量的 mySQL

标签 python mysql mysql-python

我有以下查询,其中变量是数组...

c.execute("INSERT into userData values=(%s,%s,%s,%s,%s,%s)",
            t[i],k[0],k[1],k[2],user[i],total)

这会产生语法错误。

我也尝试过这个:

a = "INSERT INTO userData VALUES ('"+t[i]+"','"+k[0]+"','"+k[1]+"','"+k[2]+"',
  '"+USER+"','"+total+"')"
c.execute(a)
conn.commit()

尽管没有错误,但这不会更新到数据库。 注意:c - 光标,conn - 连接。

最佳答案

cursor.execute()期望查询参数作为元组。试试这个:

cursor.execute("INSERT INTO userData VALUES (%s, %s, %s, %s, %s, %s)",
               (t[i], k[0], k[1], k[2], user[i], total))

请勿使用 + 等来构建 SQL 查询,因为这可能会导致代码中存在 SQL 注入(inject)漏洞。

关于Python、带有变量的 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648453/

相关文章:

python - 导入自己编写的 Python 模块

python celery 没有名为 app.tasks 的模块

php - 用PHP在MySQL数据库中插入JSON数据

php - 有效地检查组中是否存在任何值以及它是哪一个?

python-3.x - 无法pip3安装mysqlclient

python - 将制表符分隔的值插入数据库

python - 如何在没有循环的情况下使用 numpy.lexsort

python - 在 Pandas 数据框中查找第一个匹配项

PHP - 存储 SELECT 查询并在 INSERT 查询中使用它

python - 使用 MySQLdb 执行 INSERT 查询但表为空