2013-04-22 6 views
6

Sono sconcertato e frustrato da un errore che ottengo quando chiamo una funzione in python per eseguire una query. Ho controllato per assicurarmi che non abbia le linguette anziché i rientri distanziati (controllando l'oscuro). Ho seguito la convenzione utilizzata qui: http://zetcode.com/db/sqlitepythontutorial/ e qui: How to check the existence of a row in SQLite with Python?Baffling AttributeError in python con query sqlite semplice

Qualcuno può capire perché questo codice apparentemente buono genera un errore? Sono un cieco dal codice adesso. Grazie!

Errore:

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' 

codice rilevante:

#!/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); 

Questa funzione viene chiamata da un ciclo, in seguito, e viene passato correttamente i dati. Ho inserito una riga di stampa nella funzione per assicurarmi che i dati siano stati trasmessi correttamente e ottenuto questo, che è giusto.

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

Ho eseguito la stessa query esatta in sqlite direttamente sullo stesso db e i risultati tornano come previsto.

+1

'cur1 = con1.cursor()' Si noti la chiamata di funzione() ' – RedBaron

+0

RedBaron, hai ragione - grazie! –

risposta

17

credo cur1 = con1.cursor dovrebbe essere cur1 = con1.cursor()

+1

sberry, ti amo. Sembra che si possa creare un db con con.cursore, ma per fare interrogazioni, si deve effettivamente usare con.cursor() come si nota. GRAZIE - ora corri come una gemma !!!! –