2012-05-18 88 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

相關問題