Как использовать для циклов, чтобы сделать несколько операторов SQL в Python - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть список операторов SQl, при выполнении одного оператора он работает, выполняя цикл, который он выдает:

pyodbc.ProgrammingError: ('42000', "[42000] [MySQL] [Драйвер ODBC 5.1] [mysqld-5.5.8] У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL правильный синтаксис для использования рядом с 'Sql_2' в строке 1 (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()

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

Ваш кортеж должен быть

Sqls = (Sql,Sql_2,Sql_3)

вместо

Sqls = ('Sql','Sql_2','Sql_3')
3 голосов
/ 10 февраля 2011

Вы должны дополнительно переместить соединение с базой данных, а также создать курсор из цикла 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...