1

関数を使用してpyodbcを使用してMSSQLのデータをクエリしようとすると、問題が発生します。関数は次のとおりです。

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

モジュールをインポートしてこの関数を実行すると、TypeErrorが発生します。

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接続を入力パラメーターとして渡す場合の両方で発生します。

ありがとう

4

1 に答える 1

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"""

行の折り返しの詳細については、スタイル ガイドの行の最大長のセクションを参照してください。

于 2012-05-21T12:20:37.317 に答える