2015-11-07 65 views
1

我已經開始在python中使用簡單的mysql查詢,返回表中的所有列。 出於某種原因,這個命令的工作:使用%s執行Python MySQLdb類型錯誤

cursor.execute("SHOW columns from students") 

雖然所有的下列返回一個錯誤類型:

cursor.execute("SHOW columns from %s", 'students') 

cursor.execute("SHOW columns from %s", ('students',)) 

cursor.execute("SHOW columns from %s", ['students']) 

cursor.execute("""SHOW columns from %s""", 'students') 

的錯誤是:

Traceback (most recent call last): 
File "<pyshell#60>", line 1, in <module> 
    cursor.execute("SHOW columns from %s", 'students') 
File "C:\Anaconda\lib\site-packages\MySQLdb\cursors.py", line 187, in execute 
query = query % tuple([db.literal(item) for item in args]) 
TypeError: not all arguments converted during string formatting 

請告知

+0

第二種形式應該工作。你能確認具體的第二種形式的錯誤信息嗎?該示例僅顯示第一個表單的錯誤。 – Sebastian

+0

您是否嘗試過'cursor.execute(「從(%s)顯示列」,['students'])? –

+0

從第二一個錯誤: 回溯(最近通話最後一個): 文件 「」,1號線,在 cursor.execute( 「%s的SHOW列」,( '學生')) 文件「C:\蟒蛇\ LIB \站點包\ MySQLdb的\ cursors.py」,線路205,在執行 self.errorhandler(個體經營,EXC,值) 文件「C:\蟒蛇\ LIB \站點包\ MySQLdb的\ connections.py「36行,在defaulterrorhandler 提高errorclass,errorvalue ProgrammingError:(1064,」您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「正確的語法手冊'學生'在第1行) – Dimgold

回答

1

嘗試使用推薦的格式字符串格式:

cursor.execute("SHOW columns from {}".format('students')) 
+0

謝謝! 這一個工程。你能解釋爲什麼嗎? – Dimgold

+0

可能是因爲在我的情況下只有參數,而在你的有2和第二個被視爲傳遞給cursor.execute()的第二個參數。 –