2012-05-18 91 views
1
试图使用功能使用pyodbc在MSSQL查询数据时,我有一个麻烦

函数中执行查询,功能:类型错误字符串指数必须为整数时pyodbc

def getUserList(connection): 
    li = [] 
    cur = connection.cursor() 
    query = 'select username, password, firstname, lastname, description, phone,'+ 
      'email, isAdmin, isAutoBoot from users_tbl'  
    cur.execute(query) 
    for usr, pwd, fn, ln, des, ph, em, ad, au in cur.fetchall():   
     temp = User(usr, pwd, fn, ln, des, ph, em, ad, au)    
    cur.close() 
    #con.close() 
    return li 

当我导入模块和运行该功能,遇到类型错误:

Traceback (most recent call last): 
File "<pyshell#71>", line 1, in <module> 
    import_user.getUserList(s_con) 
File "c:/python27/mymodule\import_user.py", line 12, in getUserList 
    cur.execute(query) 
TypeError: string indices must be integers 

但是,如果我复制并运行这些线在Python IDLE的,它运行良好,没有错误时,执行光标。它发生在我传递pyodbc或sqlite连接作为输入参数时。

感谢

+2

我得到以'+'结尾的行上的SyntaxError。 –

回答

0

要解决语法问题,改变这些行:

query = 'select username, password, firstname, lastname, description, phone,'+ 
     'email, isAdmin, isAutoBoot from users_tbl' 

或者(换行不保留):

query = ('select username, password, firstname, lastname, description, phone, ' 
     'email, isAdmin, isAutoBoot from users_tbl') 

或(新行保留):

query = """select username, password, firstname, lastname, description, phone, 
      email, isAdmin, isAutoBoot from users_tbl""" 

请参阅样式指南的Maximum Line Length section以获取有关线包装的更多信息。

+0

感谢beargle,但它不能解决问题,我甚至试图把整个查询字符串放在一行中。 无论如何,我重新启动IDLE并再次运行,并且该函数正常工作,必须是干扰模块导入的东西。显然,如果我从命令行运行模块,该功能工作正常 – sinner

相关问题