gpt4 book ai didi

python - read_sql 和 redshift 在 unicode 上给出错误

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

查询1:使用pandas read_sql从MySQL读取。生成的数据帧有一个数据类型为 unicode 字符串的列。该列将转换为元组并在以下查询中使用。

查询2:使用pandas read_sql从Redshift读取。查询类似于

select b.a from b where b.c in {0}

在一个字符串上,它给我一个错误。该字符串类似于 u"Hello 'There",它是一个有效的 unicode 字符串。错误是

syntax error at or near ""Hello 'There""

但不应该这样认为。它将其视为空字符串(“”),后跟难以理解的符号,例如(Hello 'There“”)

是否应该更改某些配置或添加 read_sql 中的某些参数

最佳答案

我怀疑该错误消息是由某人替换标记(我使用过 {something})这样的模板生成的

'syntax error at or near "{something}"'

这意味着您应该将其视为对单个字符串的投诉,其值似乎是

'"Hello \' There"'

换句话说,您似乎正在处理一个以双引号字符开头和结尾的十五个字符的字符串,尽管总是有可能某些不适当的转换或引用添加了双引号。没有代码,没有回溯,所以很难说。

似乎在处理链中的某个地方无法正确处理 SQL 字符串文字中的单个撇号。在 SQL 中,该字符串将正确表示为

'"Hello, ''There"'

您将观察到嵌入在字符串中的单引号必须加倍才能表示它 - SQL 语法明确表示这是在 SQL 字符串常量中嵌入撇号的正确方法。由于您实际上并未显示代码的详细信息,因此该答案的帮助程度有限。

我怀疑您可能正在编写自己的 SQL,在这种情况下,在变量 sql 中给出查询,您可能需要考虑使用

sql.replace("'", "''")

作为注入(inject)到查询中的值。但如果您计划将用户输入合并到此方案中,请注意有关 SQL 注入(inject)的所有常见警告。

关于python - read_sql 和 redshift 在 unicode 上给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39568229/

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