gpt4 book ai didi

Python具有挑战性的字符串编码

转载 作者:行者123 更新时间:2023-11-28 22:58:29 25 4
gpt4 key购买 nike

我有以下提供商列表(俄语):

providers = [u'\u041e\u041e\u041e "\u041a\u0432\u0430\u0440\u0442\u0430\u043b 
\u041b\u0435\u043e\u043f\u043e\u043b\u0438\u0441"',
u'\u0426\u0435\u043d\u0442\u0440\u0430\u043b']

这些显然是在 unicode 中。以前,要执行 SQL SELECT,我会这样做:

providers = tuple([str(item) for item in providers])
sql += " WHERE provider IN {} GROUP BY date ORDER BY date ASC".format(repr(providers))
cursor.execute(sql,)

现在,由于列表项是 unicode,我遇到了 UnicodeEncodeError

我该如何正确执行此 sql 语句?

最佳答案

您不应使用 .format() 在 sql 查询中包含值。改为使用 sql 参数:

sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))

cursor.execute(sql, providers)

其中 providers 是原始列表。

想法是使用匹配列表中提供商数量的 SQL 参数语法生成带有 in 测试的 SQL 查询:WHERE provider in (%s, %s) .. . 用于两个提供者列表。是的,MySQLdb sql 参数语法与老式的 python 格式化语法相呼应,但不是一回事。

关于Python具有挑战性的字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com