2012-09-17 47 views
0

我正在存儲有關從二進制文件中讀取的文件的信息。我正在使用mysql來存儲信息。其中一列是文件的絕對路徑。這段代碼會定期運行,所以我想檢查一下這個特定的文件以前沒有被解析過。MySQL正在尋找現有的Windows路徑

我試圖執行:

path = os.path.join(root,f) 

sql = "SELECT * FROM %s WHERE Filepath = %s" % ("tntfiles", path) 

,但無濟於事。我得到一個錯誤說:「1064‘你在你的SQL語法錯誤’

我試着做同樣的查詢`路徑周圍:

path = "`" + path + "`'" 

,但我得到:」 1064 ,「你有一個錯誤的SQL語法」

我不知道我在做什麼,因爲擰我可以

"SELECT * FROM %s WHERE Id = %s" % ("tntfiles","1") 

執行類似的查詢和它工作得很好。

感謝

+0

試用[SQLAlchemy](http://www.sqlalchemy.org/)。你不會後悔用它。 – Blender

回答

0

MySQL需要有通過'或包圍字符串「 - 所以只需更改代碼以

"SELECT * FROM %s WHERE Filepath = '%s'" % ("tntfiles", path) 
+0

你是不是要在Select前面加一個'?它產生了相同的錯誤 – georges

+0

我的意思是整條線。 sql =「SELECT * FROM%s WHERE Filepath ='%s'」%(「tntfiles」,path) – sqrtsben

0
path = os.path.join(root,f) 

sql = "SELECT * FROM tntfiles WHERE Filepath = %s" 
cursor.execute(sql, (path,)) 

否則你的路徑值可能無法正確引用的特殊字符(雖然這不太可能),或者可能編碼不正確(對於Unicode和非ASCII數據更可能)

如果您絕對必須能夠在不同的標籤中進行替換文件名:

sql = "SELECT * FROM %s WHERE Filepath = %%s" % ("tntfiles",) 
cursor.execute(sql, (path,))