Python 使用sqlalchemy转义特殊角色

Python 使用sqlalchemy转义特殊角色,python,mysql,escaping,sqlalchemy,Python,Mysql,Escaping,Sqlalchemy,我正在mySQL中存储文件名和文件路径。使用LIKE表达式从数据库检索它们需要转义与mysql特殊字符冲突的所有允许的文件名字符。我很乐意简单地使用python的string.replace()方法,但我想知道是否有更标准或内置的方法可以使用SQLalchemy清理文件路径,或者在mySQL中处理一般的文件路径 编辑:更多信息。我需要的解决方案是操作系统不可知和建立。它不需要在SA中实现。我接受任何有效的编码过程。为了保存该文件,我需要一个需要转义的所有字符的列表,并明智地选择转义字符。为什么需

我正在mySQL中存储文件名和文件路径。使用LIKE表达式从数据库检索它们需要转义与mysql特殊字符冲突的所有允许的文件名字符。我很乐意简单地使用python的string.replace()方法,但我想知道是否有更标准或内置的方法可以使用SQLalchemy清理文件路径,或者在mySQL中处理一般的文件路径


编辑:更多信息。我需要的解决方案是操作系统不可知和建立。它不需要在SA中实现。我接受任何有效的编码过程。为了保存该文件,我需要一个需要转义的所有字符的列表,并明智地选择转义字符。

为什么需要转义文件路径?只要您不是手动编写选择/插入查询,SQLAlchemy将在内部生成查询时负责转义


文件路径可以按原样插入数据库。

SQLAlchemy如果要使用常规查询,请为您进行清理。可能是你使用like子句的问题。Like需要为此类符号添加转义:\ u%。因此,如果您想引用类似的表达式,您将需要替换方法。

您不需要做任何事情,SQLAlchemy会为您做的。

正如我所知,SQLAlchemy中没有您想要的。只需自己使用
basestring.replace()
方法。

我正在使用
.like()
SA方法来选择文件路径。据我所知,它使用
%
(还有其他的吗?)作为通配符。两者都是有效的filname CHR。如果SA能读懂我的心思,知道我什么时候在使用
\uuu
作为搜索通配符,而不是文件名中的文字字符,并为我“照顾”它,那肯定会很奇怪:)@Toofan:Paul是对的:SQLAlchemy不会为
.like()
和配偶(
.contains()
.startswith()
等)这样做。它确实为这些方法提供了一个
escape
参数,但您必须自己对字符串进行转义,并提供使用的转义字符。请阅读此处的注释:然后您必须自己编写转义函数:path.replace('%','\\%')。replace(''\','\\\')或者您也可以像这样使用sql:从表中选择*,其中类似于'andre*%'escape'*';对于sqlAlchemy中的这一点,定义中有一个列运算符like:like(other,escape=None)Yes,现在您可以看到我的文件路径问题。反斜杠是每个windows文件路径中的一个chr。在某些文件系统中查找不是有效字符的转义字符是一个问题。我需要转义
和各种括号吗?正如我的问题所述,我很乐意按照你的建议执行.replace(),但我一直在寻找mysql中文件路径的最佳实践、通用或深思熟虑的解决方案。事实上,我使用了
.Like()
不是问题,这是主要要求。我是否只需要转义
%
?如何处理文字引号、方括号和反斜杠?您只需要转义3个字符,“、%、/。”和%”是通配符,/-转义符号。查询的其他部分将被自动清除。我知道。我在问题中这样说选项。我应该替换为什么?不是有效的linux文件名字符“*”和“\”吗?不是应该使用一些标准编码吗?我曾经考虑过使用url编码,但使用转义或双精度-%而不是%,但它很快就会变得混乱。我正在寻找一个解决方案。