【问题标题】:How do I use a list for SQL query values?如何为 SQL 查询值使用列表?
【发布时间】:2020-07-16 16:06:35
【问题描述】:

而不是在这种情况下枚举列表中的项目:

cursor.execute("INSERT INTO " + table_name + " (url, date, " + column_headers + "total_keywords" + ")" \
                    "VALUES (%s,%s,%s,%s,%s,%s)",
                    (response.url,
                    datetime.date.today(),
                    some_list[0],
                    some_list[1],
                    some_list[2],
                    some_list[3],
                    ...
                    some_list[n]
                    )
                    )

我想更一般地传递​​ num_keywords。是否可以在 SQL 查询中专门在查询的 VALUES 部分中使用列表?

下面的代码sn-p是不行的,不过思路是这样的:

cursor.execute("INSERT INTO " + table_name + " (url, date, " + column_headers + "total_keywords" + ")" \
                    "VALUES (%s,%s,%s)",
                    (response.url,
                    datetime.date.today(),
                    some_list
                    )
                    )

这可能吗?我该怎么做?

【问题讨论】:

  • +连接字符串是一个潜在的SQL注入问题

标签: python mysql


【解决方案1】:

使用* 运算符展开列表。

cursor.execute("INSERT INTO " + table_name + " (url, date, " + column_headers + "total_keywords" + ")" \
                    "VALUES (%s,%s,%s,%s,%s,%s)",
                (response.url, datetime.date.today(), *list)
)

顺便说一句,不要使用list 作为变量名,它会用该名称替换内置类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多