我正在尝试处理我的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]
但这不起作用,可能是因为反斜杠的逃逸性质。 再次使用原始字符串会产生比我想要的更多的反斜杠,而且我已经超出了我的深度。
有人可以帮助我吗?
答案 0 :(得分:5)
您不应该首先使用字符串格式来创建SQL语句。一旦你以正确的方式使用db接口,问题就会消失:
file_path = r"d:\folder\file.csv"
cursor.execute("LOAD data local INFILE %s INTO TABLE test ...);", file_path)
对SQL语句使用字符串格式化只会让自己受到SQL注入攻击。