mysql - 如何在 mysql 的 python 列表中指定用于字符串的引号?

标签 mysql python-2.7

我的列表如下:

['1.0.176.20:14386', '1.0.179.115:20208', '1.0.218.241:14699', '1.0.242.3:27376', '1.1.218.165:24513']

来自:

sessions = [session[0].replace("'", '"') for session in sessions]

但是在mysql中:

cur.execute("""
        SELECT *
        FROM logs
        WHERE logs.session IN %s
        """, (
            sessions,
        ))

它不返回任何内容,因为查询是:

SELECT *
        FROM logs
        WHERE logs.session IN ("'1.0.176.20:14386'", "'1.0.179.115:20208'")

如何在 mysql/list 中修复此问题?

最佳答案

当您格式化该字符串时,您将得到的是

... WHERE logs.session IN ['1.0.176.20:14386', '1.0.179.115:20208', (...)]

因为这是列表的字符串表示形式 ([...])。

你需要做这样的事情:

sessions_in = ",".join(map(lambda x: "'{0}'".format(x), sessions))
cur.execute("""
    SELECT *
    FROM logs
    WHERE logs.session IN ( {0} )
    """.format(sessions_in))

它将通过在所有列表项之间使用 , 连接所有列表项来创建一个字符串。由于这只会创建一个包含所有元素的单个字符串 ("1,2,3,(...)"),因此您需要在连接每个字符串之前将它们转换为带引号的字符串。这就是 map 的作用,为您提供:

"'1.0.176.20:14386','1.0.179.115:20208','1.0.218.241:14699','1.0.242.3:27376','1.1.218.165:24513'"

关于mysql - 如何在 mysql 的 python 列表中指定用于字符串的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25016869/

相关文章:

mysql - 使用 Redis 而不是 Mysql 来存储应用程序用户的位置历史记录

python - 如何在python中动态转义/输入文件名

python - 从 tricontourf 去除轮廓周围的白色痕迹

python-2.7 - Matplotlib - 在 hline 上方/下方更改线条颜色

python - 安装 pip-2.7

php - WooCommerce 中每种运输方式的设置存储在哪里?

mysql - AWS Lambda/API Gateway - 传递 ID 以使用 node.js 删除 mysql 中的行

php - 将变量设置为 $_GET 值时出现问题

image - pyplot.imsave() 正确保存图像但 cv2.imwrite() 保存相同的图像为黑色

mysql - 从 2 个表中检索数据