2016-11-09 13 views
0

同じ問題について多くの質問がありますが、私の問題の解決策は見つかりませんでした。sqlite3.ProgrammingError:不正な数のバインディングが指定されています - sqliteで検出された番号が正しくありません

私の知識ではタプルの問題ではありません。

2つの疑問符を含むクエリに2のタプルを渡します。 SQLiteはそれだけで必要と言う1.

CODE:私はできません

SELECT id from tbl_recipes where name = '?' and categoryId = ? 
('SomeName', 6) 
Traceback (most recent call last): 
    File "C:\Users\Peter\AppData\Local\Programs\Python\Python35-32\lib\site-packages\bottle.py", line 862, in _handle 
    return route.call(**args) 
    File "C:\Users\Peter\AppData\Local\Programs\Python\Python35-32\lib\site-packages\bottle.py", line 1732, in wrapper 
    rv = callback(*a, **ka) 
    File "calculator.py", line 106, in finishEdit 
    recipes.updateRecipe(categoryId, name, ingredientList) 
    File "C:\Users\Peter\Documents\perso\costCalculator\recipes.py", line 40, in updateRecipe 
    recId = getRecipeId(categoryId, name) 
    File "C:\Users\Peter\Documents\perso\costCalculator\recipes.py", line 36, in getRecipeId 
    result = sql.getOne(query, (name, int(categoryId))) 
    File "C:\Users\Peter\Documents\perso\costCalculator\sql.py", line 59, in getOne 
    c.execute(query, parameters) 
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied. 

のため:私はgetRecipeId呼び出すと

def getRecipeId(categoryId, name): 
    query = "SELECT id from tbl_recipes where name = '?' and categoryId = ?" 
    result = sql.getOne(query, (name, int(categoryId))) 
    print(result) 

def getOne(query, parameters =()): 
    conn = sqlite3.connect(db.name) 
    c = conn.cursor() 
    print(query) 
    print(parameters) 
    c.execute(query, parameters) 
    a = c.fetchone() 
    return a 

は(6を、 "somenameの")、私は出力として得ます私の人生は私が間違っていることを検出します。

+0

「最初の周りを削除しますか?最初のパラメータとして文字列を渡しますか? – rocksteady

答えて

1

プレースホルダを引用符で囲まないでください。

query = "SELECT id from tbl_recipes where name = ? and categoryId = ?" 
関連する問題