1

我正在尝试在我的 python 程序中处理文件地址并将其传递给 MySQL。

我发现我需要对地址使用原始字符串,以便它完整地到达 MySQL。这有效:

myFilePath = r"'D:\\folder\\file.csv'"
sqlStatement = r"LOAD data local INFILE %s INTO TABLE test ...);" % (myFilePath)

但是,我正在创建一个 GUI,并希望路径名可以更改。所以我试图将普通文件路径转换为正确的格式,但我无法完成。

我怎样才能转换

filePath = "D:\folder\file.csv"

成与上面的 myFilePath 完全相同的格式?

到目前为止我想出的最好的是

myFilePath = r'r"' + "'" + filePath + "'"

但是我仍然需要将现有的反斜杠加倍,而且我找不到任何方法来做到这一点。我试过迭代,像这样:

myFilePath = ""
for i in range(len(filePath)):
    if i == "\\":
        myFilePath += "\\\\"
    else:
        myFilePath += filePath[i]

但这不起作用,可能是因为反斜杠的转义性质。再次使用原始字符串会产生比我想要的更多的反斜杠,而且我已经超出了我的深度。

任何人都可以帮助我吗?

4

1 回答 1

5

首先,您不应该使用字符串格式来创建 SQL 语句。一旦您以正确的方式使用 db 接口,问题就会消失:

file_path = r"d:\folder\file.csv"
cursor.execute("LOAD data local INFILE %s INTO TABLE test ...);", file_path)

对 SQL 语句使用字符串格式只会让自己面临 SQL 注入攻击。

于 2012-06-25T15:19:25.590 回答