2013-04-22 21 views
6

Pythonで関数を呼び出してクエリを実行すると、エラーに悩まされて困惑します。私は間隔のないインデント(不明瞭なチェック)の代わりにタブがないことを確認しました。私はここで使用されているコンベンションに従いました:http://zetcode.com/db/sqlitepythontutorial/とここに:How to check the existence of a row in SQLite with Python?単純なsqliteクエリを使ったPythonのAttributeError

この一見良いコードがなぜエラーになるのでしょうか?私は今、コードブラインドです。ありがとう!

エラー:

File "paddle-csv-import.py", line 23, in getscore 
cur1.execute("SELECT pts FROM matchpoints WHERE s1 =? and s2 = ? and \ 
AttributeError: 'builtin_function_or_method' object has no attribute 'execute' 

関連コード:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import numpy as np 
import sqlite3 as lite 
import trueskill as ts 
import sys 
import csv 
import datetime 

#global declarations 

# global variables 
season = '1011' 
unknum = 0 

# global functions 


def getscore(sets): 
    con1 = None 
    con1 = lite.connect('match_setup.db') 
    cur1 = con1.cursor 
    cur1.execute("SELECT pts FROM matchpoints WHERE s1=? and s2=? and s3=?",(sets)) 
    homepoints = cur1.fetchone() 
    if homepoints is None: 
     print('There is no component named %s'%sets) 
    return(homepoints); 

この関数は、後に、ループから呼び出され、適切にデータを渡されています。関数にprint行を貼り付けて、データが正しく渡されていることを確認し、これを得ました。これは正しいことです。

('3-6', '1-6', '0-0') 

私は同じdbで直接sqliteで正確なクエリを実行し、結果が期待どおりに戻ってきました。

+1

'CUR1 = con1.cursor()'関数の呼び出しに注目してください '()' – RedBaron

+0

RedBaronは、あなたは正しいです - あなたに感謝します! –

答えて

17

私はcur1 = con1.cursorがあるべきと考えていcur1 = con1.cursor()

+1

sberry、私はあなたを愛しています。 con.cursorを使用してdbを作成できるように見えますが、クエリを実行するには、実際にcon.cursor()を使用する必要があります。ありがとう - 今は宝石のように走っている!! –