2011-02-10 71 views
0

我有SQL語句列表,運行一個單獨的語句時,它的工作運行循環它給:如何使用for循環做多個SQL語句在Python

pyodbc.ProgrammingError:(「42000」,「[ 42000] [MySQL] [ODBC 5.1驅動程序] [mysqld-5.5.8]您的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,查看在第1行'Sql_2'附近使用的正確語法1064)(SQLExecDirectW)「)

SQl = """Select something""" 
    SQl_2 = """Select something""" 
    SQl_3 = """Select something""" 


Sqls= ('Sql','Sql_2','Sql_3') 

for x in Sqls: 
    print x 
    use = Sql_2 
    # use = x 
    cxn = pyodbc.connect('DSN=MySQL;PWD=xxx') 
    csr = cxn.cursor() 
    csr.execute(use) 
    fetch = csr.fetchall() 

回答

5

你的元組應該是

​​

代替

Sqls = ('Sql','Sql_2','Sql_3') 
+1

通過在`for`循環中爲`(Sql,Sql_2,Sql_3)中的x'創建元組:'`,可以使這更簡單。 – nesv 2011-02-10 16:51:35

2

,你應該額外移動連接到數據庫,以及創造一個光標移出for循環的,因爲它是不必要的開銷。

SQl = """Select something""" 
SQl_2 = """Select something""" 
SQl_3 = """Select something""" 

Sqls = (Sql, Sql_2, Sql_3) 
cxn = pyodbc.connect('DSN=MySQL;PWD=xxx') 
csr = cxn.cursor() 

for x in Sqls: 
    print x 
    use = Sql_2 
    # use = x  
    csr.execute(use) 
    fetch = csr.fetchall()