我想在MySQL中存储Windows路径而不转义反斜杠。如何在Python中做到这一点?我正在使用MySQLdb将记录插入数据库。当我使用MySQLdb.escape_string()时,我注意到反斜杠被删除了。
ha5z0ras1#
查看os.path.normpath(thePath)我不记得是不是那个,但是有一个标准的os.path格式化函数,它给出了双反斜杠,可以“原样”存储在数据库中,并在以后“原样”重用。我没有更多的windows机器,不能测试它了。
os.path.normpath(thePath)
osh3o9ms2#
只需使用字典在需要的地方添加斜杠,使查询有效:http://codepad.org/7mjbwKBf
def addslashes(s): dict = {"\0":"\\\0", "\\":"\\\\"} #add more here return ''.join(dict.get(x,x) for x in s) query = "INSERT INTO MY_TABLE id,path values(23,'c:\windows\system\')"; print(addslashes(query));
6mw9ycah3#
11年零7个月后,我可以说一种方法是首先用一个特殊字符替换所有的-比如一个制表符,(file_path.replace('\\','\t')),然后让MySQL将其转换回char(92),这是一个反斜杠(REPLACE('{log_file_name}',CHAR(9),CHAR(92))。例如,从:
file_path.replace('\\','\t')
REPLACE('{log_file_name}',CHAR(9),CHAR(92)
sql="INSERT INTO df_log (file_path) VALUES ('{log_file_name}');".format(file_path=file_path)) cursor.execute(sql) conn.commit()
致:
sql="INSERT INTO df_log (file_path) VALUES (REPLACE('{log_file_name}',CHAR(9),CHAR(92));".format(file_path=file_path.replace('\\','\t'))) cursor.execute(sql) conn.commit()
3条答案
按热度按时间ha5z0ras1#
查看
os.path.normpath(thePath)
我不记得是不是那个,但是有一个标准的os.path格式化函数,它给出了双反斜杠,可以“原样”存储在数据库中,并在以后“原样”重用。我没有更多的windows机器,不能测试它了。
osh3o9ms2#
只需使用字典在需要的地方添加斜杠,使查询有效:
http://codepad.org/7mjbwKBf
6mw9ycah3#
11年零7个月后,我可以说一种方法是首先用一个特殊字符替换所有的-比如一个制表符,(
file_path.replace('\\','\t')
),然后让MySQL将其转换回char(92),这是一个反斜杠(REPLACE('{log_file_name}',CHAR(9),CHAR(92)
)。例如,从:
致: