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で正確なクエリを実行し、結果が期待どおりに戻ってきました。
'CUR1 = con1.cursor()'関数の呼び出しに注目してください '()' – RedBaron
RedBaronは、あなたは正しいです - あなたに感謝します! –